Enum wgpu_types::BindingType
source · pub enum BindingType {
Buffer {
ty: BufferBindingType,
has_dynamic_offset: bool,
min_binding_size: Option<BufferSize>,
},
Sampler(SamplerBindingType),
Texture {
sample_type: TextureSampleType,
view_dimension: TextureViewDimension,
multisampled: bool,
},
StorageTexture {
access: StorageTextureAccess,
format: TextureFormat,
view_dimension: TextureViewDimension,
},
AccelerationStructure,
}
Expand description
Specific type of a binding.
For use in BindGroupLayoutEntry
.
Corresponds to WebGPU’s mutually exclusive fields within GPUBindGroupLayoutEntry
.
Variants§
Buffer
Fields
ty: BufferBindingType
Sub-type of the buffer binding.
has_dynamic_offset: bool
Indicates that the binding has a dynamic offset.
One offset must be passed to RenderPass::set_bind_group
for each dynamic binding in increasing order of binding number.
min_binding_size: Option<BufferSize>
The minimum size for a BufferBinding
matching this entry, in bytes.
If this is Some(size)
:
-
When calling
create_bind_group
, the resource at this bind point must be aBindingResource::Buffer
whose effective size is at leastsize
. -
When calling
create_render_pipeline
orcreate_compute_pipeline
,size
must be at least the minimum buffer binding size for the shader module global at this bind point: large enough to hold the global’s value, along with one element of a trailing runtime-sized array, if present.
If this is None
:
- Each draw or dispatch command checks that the buffer range at this bind point satisfies the minimum buffer binding size.
A buffer binding.
Corresponds to WebGPU GPUBufferBindingLayout
.
Sampler(SamplerBindingType)
A sampler that can be used to sample a texture.
Example WGSL syntax:
@group(0) @binding(0)
var s: sampler;
Example GLSL syntax:
layout(binding = 0)
uniform sampler s;
Corresponds to WebGPU GPUSamplerBindingLayout
.
Texture
Fields
sample_type: TextureSampleType
Sample type of the texture binding.
view_dimension: TextureViewDimension
Dimension of the texture view that is going to be sampled.
A texture binding.
Example WGSL syntax:
@group(0) @binding(0)
var t: texture_2d<f32>;
Example GLSL syntax:
layout(binding = 0)
uniform texture2D t;
Corresponds to WebGPU GPUTextureBindingLayout
.
StorageTexture
Fields
access: StorageTextureAccess
Allowed access to this texture.
format: TextureFormat
Format of the texture.
view_dimension: TextureViewDimension
Dimension of the texture view that is going to be sampled.
A storage texture.
Example WGSL syntax:
@group(0) @binding(0)
var my_storage_image: texture_storage_2d<f32, write>;
Example GLSL syntax:
layout(set=0, binding=0, r32f) writeonly uniform image2D myStorageImage;
Note that the texture format must be specified in the shader as well. A list of valid formats can be found in the specification here: https://www.khronos.org/registry/OpenGL/specs/gl/GLSLangSpec.4.60.html#layout-qualifiers
Corresponds to WebGPU GPUStorageTextureBindingLayout
.
AccelerationStructure
A ray-tracing acceleration structure binding.
Example WGSL syntax:
@group(0) @binding(0)
var as: acceleration_structure;
Example GLSL syntax:
layout(binding = 0)
uniform accelerationStructureEXT as;
Implementations§
source§impl BindingType
impl BindingType
sourcepub fn has_dynamic_offset(&self) -> bool
pub fn has_dynamic_offset(&self) -> bool
Returns true for buffer bindings with dynamic offset enabled.
Trait Implementations§
source§impl Clone for BindingType
impl Clone for BindingType
source§fn clone(&self) -> BindingType
fn clone(&self) -> BindingType
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for BindingType
impl Debug for BindingType
source§impl Hash for BindingType
impl Hash for BindingType
source§impl PartialEq for BindingType
impl PartialEq for BindingType
source§fn eq(&self, other: &BindingType) -> bool
fn eq(&self, other: &BindingType) -> bool
self
and other
values to be equal, and is used
by ==
.