#[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 IndirectParametersGpuMetadata
impl CreateFrom for IndirectParametersGpuMetadata
fn create_from<B: BufferRef>(reader: &mut Reader<B>) -> Self
Source§impl Default for IndirectParametersGpuMetadata
impl Default for IndirectParametersGpuMetadata
Source§fn default() -> IndirectParametersGpuMetadata
fn default() -> IndirectParametersGpuMetadata
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 size(&self) -> NonZeroU64
fn size(&self) -> NonZeroU64
Self
at runtime Read moreSource§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 IndirectParametersGpuMetadata
impl WriteInto for IndirectParametersGpuMetadata
fn write_into<B: BufferMut>(&self, writer: &mut Writer<B>)
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> DowncastSend for T
impl<T> DowncastSend 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