pub struct CachedGraphPlan {Show 14 fields
pub has_glass: bool,
pub has_bloom: bool,
pub has_accessibility: bool,
pub has_volumetric: bool,
pub active_offscreens_count: usize,
pub offscreen_content_hash: u64,
pub portal_regions_count: usize,
pub portal_content_hash: u64,
pub width: u32,
pub height: u32,
pub scale_bits: u32,
pub material_compilation_hash: u64,
pub graph: KvasirGraph,
pub plan: Vec<NodeKey>,
}Expand description
Holds the configuration signature, render graph, and compiled pass sequence.
Fields§
§has_glass: boolWhether backdrop glass blur pass is enabled.
has_bloom: boolWhether bloom post-processing pass is enabled.
has_accessibility: boolWhether accessibility color-blind simulation is enabled.
has_volumetric: boolWhether volumetric raymarching pass is enabled.
active_offscreens_count: usizeNumber of active offscreen compositor nodes.
offscreen_content_hash: u64Content hash for offscreen effects (effect name, blend mode, args). Changes when effect content changes even if count stays the same.
portal_regions_count: usizeNumber of active portal blur boundary regions.
portal_content_hash: u64Content hash for portal regions (rect coordinates). Changes when portal positions/sizes change even if count stays the same.
width: u32Frame buffer width in physical pixels.
height: u32Frame buffer height in physical pixels.
scale_bits: u32Bits representation of scale factor float to allow exact comparison.
material_compilation_hash: u64Content hash for material graph compilation results. Changes when a material’s WGSL output changes (e.g., a Custom material node is modified) so the cached plan is invalidated rather than reused with stale shader bindings. P1-9 fix: previously the cache key did not include material compilation, so a material change would silently produce stale shader bindings on the next frame.
graph: KvasirGraphThe cached render graph DAG structure.
plan: Vec<NodeKey>The compiled execution order of graph node keys.
Implementations§
Source§impl CachedGraphPlan
impl CachedGraphPlan
Sourcepub fn matches(
&self,
has_glass: bool,
has_bloom: bool,
has_accessibility: bool,
has_volumetric: bool,
active_offscreens_count: usize,
offscreen_content_hash: u64,
portal_regions_count: usize,
portal_content_hash: u64,
width: u32,
height: u32,
scale_bits: u32,
material_compilation_hash: u64,
) -> bool
pub fn matches( &self, has_glass: bool, has_bloom: bool, has_accessibility: bool, has_volumetric: bool, active_offscreens_count: usize, offscreen_content_hash: u64, portal_regions_count: usize, portal_content_hash: u64, width: u32, height: u32, scale_bits: u32, material_compilation_hash: u64, ) -> bool
Check if the cached graph configuration matches the incoming parameters.
Auto Trait Implementations§
impl !RefUnwindSafe for CachedGraphPlan
impl !UnwindSafe for CachedGraphPlan
impl Freeze for CachedGraphPlan
impl Send for CachedGraphPlan
impl Sync for CachedGraphPlan
impl Unpin for CachedGraphPlan
impl UnsafeUnpin for CachedGraphPlan
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> 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>. Box<dyn Any> can
then be further downcast into Box<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>. Rc<Any> 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> 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 more