pub struct UntypedPhaseBatchedInstanceBuffers<BD>{
pub data_buffer: UninitBufferVec<BD>,
pub work_item_buffers: HashMap<RetainedViewEntity, PreprocessWorkItemBuffers>,
pub late_indexed_indirect_parameters_buffer: RawBufferVec<LatePreprocessWorkItemIndirectParameters>,
pub late_non_indexed_indirect_parameters_buffer: RawBufferVec<LatePreprocessWorkItemIndirectParameters>,
}Expand description
The GPU buffers holding the data needed to render batches for a single phase, without a type parameter for that phase.
Since this structure doesn’t have a type parameter, it can be placed in
BatchedInstanceBuffers::phase_instance_buffers.
Fields§
§data_buffer: UninitBufferVec<BD>A storage area for the buffer data that the GPU compute shader is expected to write to.
There will be one entry for each index.
work_item_buffers: HashMap<RetainedViewEntity, PreprocessWorkItemBuffers>The index of the buffer data in the current input buffer that corresponds to each instance.
This is keyed off each view. Each view has a separate buffer.
late_indexed_indirect_parameters_buffer: RawBufferVec<LatePreprocessWorkItemIndirectParameters>A buffer that holds the number of indexed meshes that weren’t visible in the previous frame, when GPU occlusion culling is in use.
There’s one set of LatePreprocessWorkItemIndirectParameters per
view. Bevy uses this value to determine how many threads to dispatch to
check meshes that weren’t visible next frame to see if they became newly
visible this frame.
late_non_indexed_indirect_parameters_buffer: RawBufferVec<LatePreprocessWorkItemIndirectParameters>A buffer that holds the number of non-indexed meshes that weren’t visible in the previous frame, when GPU occlusion culling is in use.
There’s one set of LatePreprocessWorkItemIndirectParameters per
view. Bevy uses this value to determine how many threads to dispatch to
check meshes that weren’t visible next frame to see if they became newly
visible this frame.
Implementations§
Source§impl<BD> UntypedPhaseBatchedInstanceBuffers<BD>
impl<BD> UntypedPhaseBatchedInstanceBuffers<BD>
pub fn new() -> Self
Sourcepub fn instance_data_binding(&self) -> Option<BindingResource<'_>>
pub fn instance_data_binding(&self) -> Option<BindingResource<'_>>
Returns the binding of the buffer that contains the per-instance data.
This buffer needs to be filled in via a compute shader.
Trait Implementations§
Auto Trait Implementations§
impl<BD> Freeze for UntypedPhaseBatchedInstanceBuffers<BD>
impl<BD> !RefUnwindSafe for UntypedPhaseBatchedInstanceBuffers<BD>
impl<BD> Send for UntypedPhaseBatchedInstanceBuffers<BD>
impl<BD> Sync for UntypedPhaseBatchedInstanceBuffers<BD>
impl<BD> Unpin for UntypedPhaseBatchedInstanceBuffers<BD>where
BD: Unpin,
impl<BD> !UnwindSafe for UntypedPhaseBatchedInstanceBuffers<BD>
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> 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, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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