pub enum PhaseItemExtraIndex {
None,
DynamicOffset(u32),
IndirectParametersIndex {
range: Range<u32>,
batch_set_index: Option<NonMaxU32>,
},
}
Expand description
The “extra index” associated with some PhaseItem
s, alongside the
indirect instance index.
Sometimes phase items require another index in addition to the range of instances they already have. These can be:
-
The dynamic offset: a
wgpu
dynamic offset into the uniform buffer of instance data. This is used on platforms that don’t support storage buffers, to work around uniform buffer size limitations. -
The indirect parameters index: an index into the buffer that specifies the indirect parameters for this
PhaseItem
’s drawcall. This is used when indirect mode is on (as used for GPU culling).
Note that our indirect draw functionality requires storage buffers, so it’s
impossible to have both a dynamic offset and an indirect parameters index.
This convenient fact allows us to pack both indices into a single u32
.
Variants§
None
No extra index is present.
DynamicOffset(u32)
A wgpu
dynamic offset into the uniform buffer of instance data. This
is used on platforms that don’t support storage buffers, to work around
uniform buffer size limitations.
IndirectParametersIndex
An index into the buffer that specifies the indirect parameters for this
PhaseItem
’s drawcall. This is used when indirect mode is on (as used
for GPU culling).
Fields
range: Range<u32>
The range of indirect parameters within the indirect parameters array.
If we’re using multi_draw_indirect_count
, this specifies the
maximum range of indirect parameters within that array. If batches
are ultimately culled out on the GPU, the actual number of draw
commands might be lower than the length of this range.
Implementations§
Source§impl PhaseItemExtraIndex
impl PhaseItemExtraIndex
Sourcepub fn maybe_indirect_parameters_index(
indirect_parameters_index: Option<NonMaxU32>,
) -> PhaseItemExtraIndex
pub fn maybe_indirect_parameters_index( indirect_parameters_index: Option<NonMaxU32>, ) -> PhaseItemExtraIndex
Returns either an indirect parameters index or
PhaseItemExtraIndex::None
, as appropriate.
Sourcepub fn maybe_dynamic_offset(
dynamic_offset: Option<NonMaxU32>,
) -> PhaseItemExtraIndex
pub fn maybe_dynamic_offset( dynamic_offset: Option<NonMaxU32>, ) -> PhaseItemExtraIndex
Returns either a dynamic offset index or PhaseItemExtraIndex::None
,
as appropriate.
Trait Implementations§
Source§impl Clone for PhaseItemExtraIndex
impl Clone for PhaseItemExtraIndex
Source§fn clone(&self) -> PhaseItemExtraIndex
fn clone(&self) -> PhaseItemExtraIndex
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for PhaseItemExtraIndex
impl Debug for PhaseItemExtraIndex
Source§impl Hash for PhaseItemExtraIndex
impl Hash for PhaseItemExtraIndex
Source§impl PartialEq for PhaseItemExtraIndex
impl PartialEq for PhaseItemExtraIndex
impl Eq for PhaseItemExtraIndex
impl StructuralPartialEq for PhaseItemExtraIndex
Auto Trait Implementations§
impl Freeze for PhaseItemExtraIndex
impl RefUnwindSafe for PhaseItemExtraIndex
impl Send for PhaseItemExtraIndex
impl Sync for PhaseItemExtraIndex
impl Unpin for PhaseItemExtraIndex
impl UnwindSafe for PhaseItemExtraIndex
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> 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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.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