Enum BindingType

Source
#[non_exhaustive]
pub enum BindingType { UniformBuffer { dynamic: bool, min_binding_size: Option<NonZero<u64>>, }, StorageBuffer { dynamic: bool, min_binding_size: Option<NonZero<u64>>, readonly: bool, }, Sampler { comparison: bool, }, SampledTexture { dimension: TextureViewDimension, component_type: TextureComponentType, multisampled: bool, }, StorageTexture { dimension: TextureViewDimension, format: TextureFormat, readonly: bool, }, }
Expand description

Specific type of a binding.

WebGPU spec: https://gpuweb.github.io/gpuweb/#dictdef-gpubindgrouplayoutentry

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

UniformBuffer

A buffer for uniform values.

Example GLSL syntax:

layout(std140, binding = 0)
uniform Globals {
    vec2 aUniform;
    vec2 anotherUniform;
};

Fields

§dynamic: 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<NonZero<u64>>

Minimum size of the corresponding BufferBinding required to match this entry. When pipeline is created, the size has to cover at least the corresponding structure in the shader plus one element of the unbound array, which can only be last in the structure. If None, the check is performed at draw call time instead of pipeline and bind group creation.

§

StorageBuffer

A storage buffer.

Example GLSL syntax:

layout (set=0, binding=0) buffer myStorageBuffer {
    vec4 myElement[];
};

Fields

§dynamic: 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<NonZero<u64>>

Minimum size of the corresponding BufferBinding required to match this entry. When pipeline is created, the size has to cover at least the corresponding structure in the shader plus one element of the unbound array, which can only be last in the structure. If None, the check is performed at draw call time instead of pipeline and bind group creation.

§readonly: bool

The buffer can only be read in the shader and it must be annotated with readonly.

Example GLSL syntax:

layout (set=0, binding=0) readonly buffer myStorageBuffer {
    vec4 myElement[];
};
§

Sampler

A sampler that can be used to sample a texture.

Example GLSL syntax:

layout(binding = 0)
uniform sampler s;

Fields

§comparison: bool

Use as a comparison sampler instead of a normal sampler. For more info take a look at the analogous functionality in OpenGL: https://www.khronos.org/opengl/wiki/Sampler_Object#Comparison_mode.

§

SampledTexture

A texture.

Example GLSL syntax:

layout(binding = 0)
uniform texture2D t;

Fields

§dimension: TextureViewDimension

Dimension of the texture view that is going to be sampled.

§component_type: TextureComponentType

Component type of the texture. This must be compatible with the format of the texture.

§multisampled: bool

True if the texture has a sample count greater than 1. If this is true, the texture must be read from shaders with texture1DMS, texture2DMS, or texture3DMS, depending on dimension.

§

StorageTexture

A storage texture.

Example GLSL syntax:

layout(set=0, binding=0, r32f) 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

Fields

§dimension: TextureViewDimension

Dimension of the texture view that is going to be sampled.

§format: TextureFormat

Format of the texture.

§readonly: bool

The texture can only be read in the shader and it must be annotated with readonly.

Example GLSL syntax:

layout(set=0, binding=0, r32f) readonly uniform image2D myStorageImage;

Trait Implementations§

Source§

impl Clone for BindingType

Source§

fn clone(&self) -> BindingType

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BindingType

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for BindingType

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<BindingType, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for BindingType

Source§

fn eq(&self, other: &BindingType) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for BindingType

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for BindingType

Source§

impl StructuralPartialEq for BindingType

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,