Version: Unity 6.6 Alpha (6000.6)
Language : English
WebGPU Device Filter asset reference
Compare WebGPU and WebGL2

WebGPU Device Filter features and limits

When you configure your WebGPU device, you can define specific hardware features and resource limits required by your project. You can add these parameters to your Allow Filters or Deny Filters lists to control which devices to support or exclude based on their capabilities.

Prerequisites

Before you can filter devices by required features or limits, you need to:

  1. Create a WebGPU Device Filter asset.
  2. In the created WedGPU Device Filter asset, select + under the Allow Filters or Deny Filters list.
  3. Expand Capabilities. The Required Features and Limits lists show.

Required features

Filter your device depending on what features your device supports.

To filter devices by required features:

  1. In the device filter asset, select Add Feature. This adds a feature to the list.
  2. Set Feature to your preffered feature from the dropdown.

The filtering asset contains the following feature options:

Feature Name Description
None No specific feature requirements.
BGRA8UnormStorage Supports using the bgra8unorm texture formatA file format for handling textures during real-time rendering by 3D graphics hardware, such as a graphics card or mobile device. More info
See in Glossary
for storage usage (bgra8-unorm-storage).
ClipDistances Allows vertex shadersA program that runs on the GPU. More info
See in Glossary
to write to user-defined clip distances (clip-distances).
CoreFeaturesAndLimits Guarantees support for WebGPU core features and minimum required limits (core-features-and-limits).
Depth32FloatStencil8 Supports the depth32float-stencil8 combined depth and stencil texture format.
DepthClipControl Allows disabling depth clipping, which enables the use of depth clamping (depth-clip-control).
DualSourceBlending Enables dual-source blending, which allows shaders to output two colors to the same color attachment (dual-source-blending).
Float32Blendable Allows blending operations on 32-bit floating-point color attachments (float32-blendable).
Float32Filterable Allows linear filtering when sampling 32-bit floating-point textures (float32-filterable).
IndirectFirstInstance Enables the firstInstance parameter in indirect draw calls (indirect-first-instance).
PrimitiveIndex Allows shaders to read the primitive index (primitive-index).
RG11B10UfloatRenderable Allows rendering directly to textures using the rg11b10ufloat format (rg11b10ufloat-renderable).
ShaderF16 Enables the use of 16-bit floating-point types (f16) for performance optimizations in shaders (shader-f16).
Subgroups Enables subgroup operations in compute and fragment shaders (subgroups).
TextureComponentSwizzle Allows customizing how texture channels (R, G, B, A) are swizzled when reading (texture-component-swizzle).
TextureCompressionASTC Supports Adaptive Scalable Texture CompressionA method of storing data that reduces the amount of storage space it requires. See Texture Compression, Animation Compression, Audio Compression, Build Compression.
See in Glossary
(ASTC) formats (texture-compression-astc).
TextureCompressionASTCSliced3D Supports 3D sliced textures using ASTC compression (texture-compression-astc-sliced-3d).
TextureCompressionBC Supports Block Compression (BC) formats, commonly used on desktop hardware (texture-compression-bc).
TextureCompressionBCSliced3D Supports 3D sliced textures using BC compression (texture-compression-bc-sliced-3d).
TextureCompressionETC2 Supports Ericsson Texture Compression3D Graphics hardware requires Textures to be compressed in specialized formats which are optimized for fast Texture sampling. More info
See in Glossary
(ETC2) formats, standard on mobile devices (texture-compression-etc2).
TextureFormatsTier1 Provides Tier 1 level extended support for texture formats (texture-formats-tier-1).
TextureFormatsTier2 Provides Tier 2 level extended support for texture formats (texture-formats-tier-2).
TimestampQuery Allows querying GPU timestamp execution times for accurate performance profiling (timestamp-query).

Limits

Filter devices depending on required resource counts, dimensions, and memory allocations. These limits ensure the device can handle the specific load and architecture of your application.

To filter devices by limits:

  1. From the filtering asset, select Add Limit.
  2. Set Limit to your preferred limit.

The filtering asset has the following limit options:

Limit Name Description
None No specific limit requirement.
MaxBindGroups The maximum number of bind groups that can be bound simultaneously in a pipeline.
MaxBindGroupsPlusVertexBuffers The combined maximum limit for the sum of bound bind groups and bound vertex buffers.
MaxBindingsPerBindGroup The maximum number of individual resources (textures, buffers, samplers) allowed within a single bind group.
MaxBufferSize The maximum allowed size (in bytes) for a single buffer.
MaxColorAttachmentBytesPerSample The maximum total bytes per sample across all color attachments in a single render pass.
MaxColorAttachments The maximum number of color attachments that can be output to simultaneously.
MaxComputeInvocationsPerWorkgroup The maximum total number of shader invocations (threads) allowed in a single compute work group (X × Y × Z).
MaxComputeWorkgroupSizeX The maximum size of a compute work group in the X dimension.
MaxComputeWorkgroupSizeY The maximum size of a compute work group in the Y dimension.
MaxComputeWorkgroupSizeZ The maximum size of a compute work group in the Z dimension.
MaxComputeWorkgroupsPerDimension The maximum number of compute work groups that can be dispatched in any single dimension (X, Y, or Z).
MaxComputeWorkgroupStorageSize The maximum amount of shared memory (in bytes) available per compute work group.
MaxDynamicStorageBuffersPerPipelineLayout The maximum number of dynamic storage buffers allowed in a pipeline layout.
MaxDynamicUniformBuffersPerPipelineLayout The maximum number of dynamic uniform buffers allowed in a pipeline layout.
MaxInterStageShaderVariables The maximum number of variables that can be passed between shader stages (for example, from vertex to fragment).
MaxSampledTexturesPerShaderStage The maximum number of sampled textures accessible within a single shader stage.
MaxSamplersPerShaderStage The maximum number of texture samplers allowed within a single shader stage.
MaxStorageBufferBindingSize The maximum binding size (in bytes) allowed for a single storage buffer.
MaxStorageBuffersInFragmentStage The maximum number of storage buffers accessible specifically in the fragment shader stage.
MaxStorageBuffersInVertexStage The maximum number of storage buffers accessible specifically in the vertex shaderA program that runs on each vertex of a 3D model when the model is being rendered. More info
See in Glossary
stage.
MaxStorageBuffersPerShaderStage The maximum number of storage buffers accessible across any single shader stage.
MaxStorageTexturesInFragmentStage The maximum number of storage textures accessible specifically in the fragment shader stage.
MaxStorageTexturesInVertexStage The maximum number of storage textures accessible specifically in the vertex shader stage.
MaxStorageTexturesPerShaderStage The maximum number of storage textures accessible across any single shader stage.
MaxTextureArrayLayers The maximum number of 2D array layers allowed in a texture array.
MaxTextureDimension1D The maximum length of a 1D texture.
MaxTextureDimension2D The maximum width or height of a 2D texture.
MaxTextureDimension3D The maximum width, height, or depth of a 3D texture.
MaxUniformBufferBindingSize The maximum binding size (in bytes) allowed for a single uniform buffer.
MaxUniformBuffersPerShaderStage The maximum number of uniform buffers accessible within a single shader stage.
MaxVertexAttributes The maximum number of vertex attributes supported in a single vertex layout.
MaxVertexBuffers The maximum number of vertex buffers that can be bound simultaneously.
MaxVertexBufferArrayStride The maximum allowed stride (in bytes) between elements in a vertex buffer array.
MinStorageBufferOffsetAlignment The required minimum alignment (in bytes) for storage buffer binding offsets.
MinUniformBufferOffsetAlignment The required minimum alignment (in bytes) for uniform buffer binding offsets.

Additional resources

WebGPU Device Filter asset reference
Compare WebGPU and WebGL2