pub struct BindlessDescriptor {
pub resources: Cow<'static, [BindlessResourceType]>,
pub buffers: Cow<'static, [BindlessBufferDescriptor]>,
pub index_tables: Cow<'static, [BindlessIndexTableDescriptor]>,
}
Expand description
Information about the bindless resources in this object.
The material bind group allocator uses this descriptor in order to create
and maintain bind groups. The fields within this bindless descriptor are
Cow
s in order to support both the common case in which the fields are
simply static
constants and the more unusual case in which the fields are
dynamically generated efficiently. An example of the latter case is
ExtendedMaterial
, which needs to assemble a bindless descriptor from those
of the base material and the material extension at runtime.
This structure will only be present if this object is bindless.
Fields§
§resources: Cow<'static, [BindlessResourceType]>
The bindless resource types that this object uses, in order of bindless index.
The resource assigned to binding index 0 will be at index 0, the
resource assigned to binding index will be at index 1 in this array, and
so on. Unused binding indices are set to BindlessResourceType::None
.
buffers: Cow<'static, [BindlessBufferDescriptor]>
The BindlessBufferDescriptor
for each bindless buffer that this
object uses.
The order of this array is irrelevant.
index_tables: Cow<'static, [BindlessIndexTableDescriptor]>
The BindlessIndexTableDescriptor
s describing each bindless index
table.
This list must be sorted by the first bindless index.
Auto Trait Implementations§
impl Freeze for BindlessDescriptor
impl RefUnwindSafe for BindlessDescriptor
impl Send for BindlessDescriptor
impl Sync for BindlessDescriptor
impl Unpin for BindlessDescriptor
impl UnwindSafe for BindlessDescriptor
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
, which can then be
downcast
into Box<dyn ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
, which can then be further
downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more