pub struct PrepareBreakdown {
pub plugin_ms: f32,
pub lighting_ms: f32,
pub uniforms_ms: f32,
pub instancing_ms: f32,
pub geometry_ms: f32,
pub shadow_ms: f32,
pub viewport_ms: f32,
pub other_ms: f32,
}Expand description
CPU time spent in each phase of prepare(), in milliseconds.
FrameStats::cpu_prepare_ms is the total. This splits that total across the
main phases so a slow prepare can be attributed to a specific one instead
of guessing. The fields sum to roughly cpu_prepare_ms; other_ms carries
the remainder (timestamp readback, scatter-volume sort, stats assembly, and
other small per-frame work).
All values are wall-clock CPU time on the thread calling prepare, measured
with Instant. They measure how long it takes to record and submit the work,
not how long the GPU spends running it; use gpu_frame_ms for GPU cost.
Fields§
§plugin_ms: f32Item-type plugin prepare and cull dispatch. Skinning and other vertex deformers run here, so a heavy skinned crowd shows up in this field.
lighting_ms: f32Lighting setup: directional shadow cascade matrices, point-light cube-map faces, and light clustering.
uniforms_ms: f32Per-object uniform writes on the non-instanced path. Zero when the scene is above the instancing threshold and all meshes batch.
instancing_ms: f32Building and uploading instanced batches (grouping items by mesh and material, writing instance data).
geometry_ms: f32Uploading non-mesh geometry: glyphs, point clouds, polylines, decals, images, tubes, ribbons, slices, and volumes.
shadow_ms: f32Recording the shadow depth pass (directional cascades and point-light cube-map faces) into the atlas.
viewport_ms: f32Per-viewport prepare: camera and clip uniforms, grid, overlays, and interaction state. Runs once per viewport.
other_ms: f32Remainder of prepare not covered by the fields above.
Trait Implementations§
Source§impl Clone for PrepareBreakdown
impl Clone for PrepareBreakdown
Source§fn clone(&self) -> PrepareBreakdown
fn clone(&self) -> PrepareBreakdown
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for PrepareBreakdown
Source§impl Debug for PrepareBreakdown
impl Debug for PrepareBreakdown
Source§impl Default for PrepareBreakdown
impl Default for PrepareBreakdown
Source§fn default() -> PrepareBreakdown
fn default() -> PrepareBreakdown
Auto Trait Implementations§
impl Freeze for PrepareBreakdown
impl RefUnwindSafe for PrepareBreakdown
impl Send for PrepareBreakdown
impl Sync for PrepareBreakdown
impl Unpin for PrepareBreakdown
impl UnsafeUnpin for PrepareBreakdown
impl UnwindSafe for PrepareBreakdown
Blanket Implementations§
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> DowncastSync for T
impl<T> DowncastSync 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.