#[repr(C)]pub struct IndirectParametersGpuMetadata {
pub mesh_index: u32,
pub early_instance_count: u32,
pub late_instance_count: u32,
}
Expand description
A structure, written and read GPU, that records how many instances of each mesh are actually to be drawn.
The GPU mesh preprocessing shader increments the
Self::early_instance_count
and Self::late_instance_count
as it
determines that meshes are visible. The indirect parameter building shader
reads this metadata in order to construct the indirect draw parameters.
Each batch will have one instance of this structure.
Fields§
§mesh_index: u32
The index of the first mesh in this batch in the array of
MeshInputUniform
s.
early_instance_count: u32
The number of instances that were judged visible last frame.
The CPU sets this value to 0, and the GPU mesh preprocessing shader increments it as it culls mesh instances.
late_instance_count: u32
The number of instances that have been judged potentially visible this frame that weren’t in the last frame’s potentially visible set.
The CPU sets this value to 0, and the GPU mesh preprocessing shader increments it as it culls mesh instances.
Trait Implementations§
Source§impl Clone for IndirectParametersGpuMetadata
impl Clone for IndirectParametersGpuMetadata
Source§fn clone(&self) -> IndirectParametersGpuMetadata
fn clone(&self) -> IndirectParametersGpuMetadata
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl CreateFrom for IndirectParametersGpuMetadatawhere
IndirectParametersGpuMetadata: ShaderType<ExtraMetadata = StructMetadata<3>>,
u32: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
impl CreateFrom for IndirectParametersGpuMetadatawhere
IndirectParametersGpuMetadata: ShaderType<ExtraMetadata = StructMetadata<3>>,
u32: for<'__> CreateFrom + for<'__> CreateFrom + for<'__> CreateFrom,
fn create_from<B>(reader: &mut Reader<B>) -> IndirectParametersGpuMetadatawhere
B: BufferRef,
Source§impl Default for IndirectParametersGpuMetadata
impl Default for IndirectParametersGpuMetadata
Source§fn default() -> IndirectParametersGpuMetadata
fn default() -> IndirectParametersGpuMetadata
Source§impl ReadFrom for IndirectParametersGpuMetadatawhere
IndirectParametersGpuMetadata: ShaderType<ExtraMetadata = StructMetadata<3>>,
u32: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
impl ReadFrom for IndirectParametersGpuMetadatawhere
IndirectParametersGpuMetadata: ShaderType<ExtraMetadata = StructMetadata<3>>,
u32: for<'__> ReadFrom + for<'__> ReadFrom + for<'__> ReadFrom,
Source§impl ShaderSize for IndirectParametersGpuMetadatawhere
u32: ShaderSize,
impl ShaderSize for IndirectParametersGpuMetadatawhere
u32: ShaderSize,
Source§const SHADER_SIZE: NonZero<u64> = _
const SHADER_SIZE: NonZero<u64> = _
ShaderType::min_size
)Source§impl ShaderType for IndirectParametersGpuMetadata
impl ShaderType for IndirectParametersGpuMetadata
Source§fn assert_uniform_compat()
fn assert_uniform_compat()
Self
meets the requirements of the
uniform address space restrictions on stored values and the
uniform address space layout constraints Read moreSource§impl WriteInto for IndirectParametersGpuMetadatawhere
IndirectParametersGpuMetadata: ShaderType<ExtraMetadata = StructMetadata<3>>,
u32: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
impl WriteInto for IndirectParametersGpuMetadatawhere
IndirectParametersGpuMetadata: ShaderType<ExtraMetadata = StructMetadata<3>>,
u32: for<'__> WriteInto + for<'__> WriteInto + for<'__> WriteInto,
fn write_into<B>(&self, writer: &mut Writer<B>)where
B: BufferMut,
impl Copy for IndirectParametersGpuMetadata
impl Pod for IndirectParametersGpuMetadata
Auto Trait Implementations§
impl Freeze for IndirectParametersGpuMetadata
impl RefUnwindSafe for IndirectParametersGpuMetadata
impl Send for IndirectParametersGpuMetadata
impl Sync for IndirectParametersGpuMetadata
impl Unpin for IndirectParametersGpuMetadata
impl UnwindSafe for IndirectParametersGpuMetadata
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> CheckedBitPattern for Twhere
T: AnyBitPattern,
impl<T> CheckedBitPattern for Twhere
T: AnyBitPattern,
Source§type Bits = T
type Bits = T
Self
must have the same layout as the specified Bits
except for
the possible invalid bit patterns being checked during
is_valid_bit_pattern
.Source§fn is_valid_bit_pattern(_bits: &T) -> bool
fn is_valid_bit_pattern(_bits: &T) -> bool
bits
as &Self
.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> 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>
. Box<dyn Any>
can
then be further downcast
into Box<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>
. Rc<Any>
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> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self
using default()
.
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