#[non_exhaustive]pub struct DebugVis {
pub active: bool,
pub mode: DebugOutputMode,
pub channel_r: DebugQuantity,
pub channel_g: DebugQuantity,
pub channel_b: DebugQuantity,
pub scale: f32,
pub split_x: f32,
}Expand description
Debug visualization configuration for the shadow and lighting pipeline.
Attach to [LightingSettings::debug_vis] to activate per-fragment channel output.
When active is false all overhead is zero: debug_vis_mode is written as 0
and the shader exits the debug path immediately.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.active: boolWhether debug visualization is active.
mode: DebugOutputModeHow the debug value is composited over the normal render.
channel_r: DebugQuantityQuantity shown in the red channel.
channel_g: DebugQuantityQuantity shown in the green channel.
channel_b: DebugQuantityQuantity shown in the blue channel.
scale: f32Multiplier applied to the raw quantity value before display. Use values > 1.0 to bring small quantities (e.g. bias in world units) into visible range.
split_x: f32Split position for SplitScreen mode, in normalized viewport coordinates (0..1).
0.5 = center. Ignored unless mode is SplitScreen.
Implementations§
Source§impl DebugVis
impl DebugVis
Sourcepub fn new(
mode: DebugOutputMode,
channel_r: DebugQuantity,
channel_g: DebugQuantity,
channel_b: DebugQuantity,
scale: f32,
) -> Self
pub fn new( mode: DebugOutputMode, channel_r: DebugQuantity, channel_g: DebugQuantity, channel_b: DebugQuantity, scale: f32, ) -> Self
Create a new active debug visualization configuration.
Sourcepub fn pack_mode(&self) -> u32
pub fn pack_mode(&self) -> u32
Pack the channel selectors, output mode, and active flag into a single u32.
Bit layout: bits 0..5 : channel R quantity index (5 bits, up to 32 quantities) bits 5..10 : channel G quantity index bits 10..15 : channel B quantity index bits 15..17 : output mode (0=Replace, 1=TintOverlay) bit 31 : active flag (0=off, non-zero=on)
Returns 0 when not active, so the shader exits immediately.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for DebugVis
impl RefUnwindSafe for DebugVis
impl Send for DebugVis
impl Sync for DebugVis
impl Unpin for DebugVis
impl UnsafeUnpin for DebugVis
impl UnwindSafe for DebugVis
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.