pub struct RenderStats {
pub draw_calls: u32,
pub objects: u32,
pub skinned_visible: u32,
pub skinned_pool_free: u32,
pub gpu_frame_us: u32,
pub vram_bytes: u64,
pub transient_pool_bytes: u64,
pub pass_times_us: [(&'static str, u32); 32],
pub auto_exposure_ev: Option<f32>,
pub max_edr: Option<f32>,
}Expand description
Per-frame render-backend statistics.
Fields§
§draw_calls: u32CPU-issued geometry draw calls this frame: the shadow, main, and
composite + text passes. The optional screen-space-effect passes (SSR,
SSAO, TAA, bloom) issue a fixed handful of fullscreen draws and are not
counted here – gpu_frame_us still covers their GPU time.
objects: u32Renderable objects in the scene this frame: static draw objects, every instanced-cluster instance, and skinned meshes.
skinned_visible: u32Visible skinned objects this frame: the authored skinned meshes plus any
live runtime-spawned instances, excluding the hidden pre-reserved
instance-pool slots. Unlike objects (which counts the whole pre-reserved
pool and so stays flat across skinned spawn/despawn), this tracks the live
count, so a spawn bumps it and a despawn drops it.
skinned_pool_free: u32Free slots remaining in the pre-reserved skinned instance pool across all templates. Drains by one when a skinned instance spawns and refills when one despawns, so a probe can watch the free-list recycle directly.
gpu_frame_us: u32GPU execution time of the most recently completed frame, in microseconds. Reported one or more frames late: the GPU timestamps are only known once that frame’s command buffer completion handler fires.
vram_bytes: u64Bytes of GPU memory currently allocated by the render device. On unified-memory hardware (Apple Silicon) this is the device’s share of system memory rather than dedicated VRAM.
transient_pool_bytes: u64Bytes the render graph’s transient pool holds: the aliased footprint of
the slots backing the graph-owned transients. Part of vram_bytes, which
is a device-wide total; carried separately so the shared memory ledger can
attribute it rather than leaving it in the unaccounted remainder.
pass_times_us: [(&'static str, u32); 32]Per-pass GPU microseconds for the most recently completed frame.
Filled by the active backend only when its GPU supports timestamp
sampling; otherwise every slot stays at the default
("", 0). Slot order is backend-defined and stable for the process
lifetime.
auto_exposure_ev: Option<f32>Current adapted exposure value (EV) from the auto-exposure EMA.
None when the world did not opt in to auto-exposure (or the active
backend has not yet wired the readout). The StatHud overlay reads
this to render the on-screen EV chip; downstream consumers can map
it to an exposure multiplier via 2^ev.
max_edr: Option<f32>Active display’s reported maximum extended-range colour-component
multiplier when the renderer is on the HDR path. Some(2.0) on a
typical HDR400 panel, Some(8.0+) on HDR1000-class panels; None
on SDR (because the world disabled HDR, the platform fell back, or
the active backend has not wired the readout). The StatHud overlay
reads this to render the on-screen EDR chip; the value is also
the linear scaling factor between SDR reference white and the
panel’s peak brightness, so a colour-grading consumer can interpret
it directly.
Trait Implementations§
Source§impl Clone for RenderStats
impl Clone for RenderStats
Source§fn clone(&self) -> RenderStats
fn clone(&self) -> RenderStats
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 RenderStats
Source§impl Debug for RenderStats
impl Debug for RenderStats
Source§impl Default for RenderStats
impl Default for RenderStats
Source§fn default() -> RenderStats
fn default() -> RenderStats
Source§impl PartialEq for RenderStats
impl PartialEq for RenderStats
impl StructuralPartialEq for RenderStats
Auto Trait Implementations§
impl Freeze for RenderStats
impl RefUnwindSafe for RenderStats
impl Send for RenderStats
impl Sync for RenderStats
impl Unpin for RenderStats
impl UnsafeUnpin for RenderStats
impl UnwindSafe for RenderStats
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,
impl<S, T> Duplex<S> for Twhere
T: FromSample<S> + ToSample<S>,
Source§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
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<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().