pub struct LayerPass<'a> {
pub cmds: &'a [DrawCmd],
pub clip: ClipStackSnapshot,
pub clip_plan: RenderClipPlan,
pub isolated: bool,
pub isolated_depth: u8,
pub effects: IsolatedEffects,
}Expand description
One scene layer: draw commands plus a non-destructive clip stack.
isolated == true requests an offscreen pass when [IsolatedEffects::needs_offscreen]
is true (opacity < 1, blur, etc.). isolated compositor renders content to a pooled
texture, runs the effect chain, then composites into the main pass.
§Examples
use ailloli_ui_render_wgpu::LayerPass;
let layer = LayerPass::new(&[]);
assert!(layer.cmds.is_empty());
assert!(!layer.isolated);Fields§
§cmds: &'a [DrawCmd]Draw commands in stable painter’s order.
clip: ClipStackSnapshotImmutable snapshot of nested clip entries for this layer.
clip_plan: RenderClipPlanResolved scissor/shader/stencil policy for Self::clip.
isolated: boolWhether the runtime requested isolated compositing.
isolated_depth: u8Nesting depth from runtime (PaintContext); 0 for flat isolated layers.
effects: IsolatedEffectsOpacity, filters, backdrop, and blend effects for isolated compositing.
Implementations§
Source§impl<'a> LayerPass<'a>
impl<'a> LayerPass<'a>
Sourcepub fn new(cmds: &'a [DrawCmd]) -> Self
pub fn new(cmds: &'a [DrawCmd]) -> Self
Creates an unclipped, non-isolated layer.
§Examples
use ailloli_ui_render_wgpu::LayerPass;
let layer = LayerPass::new(&[]);
assert!(layer.clip.is_empty());
assert!(!layer.isolated);Sourcepub fn with_clip_stack(cmds: &'a [DrawCmd], clip: ClipStackSnapshot) -> Self
pub fn with_clip_stack(cmds: &'a [DrawCmd], clip: ClipStackSnapshot) -> Self
Creates a non-isolated layer and resolves its clip rendering plan.
Command count participates in choosing shader versus stencil clipping.
§Examples
use ailloli_ui_render_wgpu::LayerPass;
use ailloli_ui_runtime::scene::ClipStackSnapshot;
let layer = LayerPass::with_clip_stack(&[], ClipStackSnapshot::empty());
assert!(layer.clip.is_empty());Sourcepub fn from_scene_layer(
cmds: &'a [DrawCmd],
clip: ClipStackSnapshot,
isolated: bool,
isolated_depth: u8,
effects: IsolatedEffects,
) -> Self
pub fn from_scene_layer( cmds: &'a [DrawCmd], clip: ClipStackSnapshot, isolated: bool, isolated_depth: u8, effects: IsolatedEffects, ) -> Self
Converts runtime scene-layer metadata into a renderer layer.
isolated_depth is the runtime nesting depth; zero represents a flat
isolated layer. Effects are retained even when isolation later
downgrades under budget pressure.
§Examples
use ailloli_ui_render_wgpu::LayerPass;
use ailloli_ui_runtime::{scene::ClipStackSnapshot, IsolatedEffects};
let layer = LayerPass::from_scene_layer(
&[],
ClipStackSnapshot::empty(),
true,
1,
IsolatedEffects::default(),
);
assert!(layer.isolated);
assert_eq!(layer.isolated_depth, 1);Sourcepub fn with_clip(cmds: &'a [DrawCmd], clip: ClipShape) -> Self
pub fn with_clip(cmds: &'a [DrawCmd], clip: ClipShape) -> Self
Creates a non-isolated layer with one ordinary clip shape.
§Examples
use ailloli_ui_core::{ClipShape, Rect};
use ailloli_ui_render_wgpu::LayerPass;
let layer = LayerPass::with_clip(
&[],
ClipShape::Rect(Rect::new(0.0, 0.0, 20.0, 10.0)),
);
assert!(!layer.clip.is_empty());Sourcepub fn with_window_root_clip(cmds: &'a [DrawCmd], clip: ClipShape) -> Self
pub fn with_window_root_clip(cmds: &'a [DrawCmd], clip: ClipShape) -> Self
Creates a clipped layer whose single clip is the window root.
Root status can force stencil selection for rounded window chrome.
§Examples
use ailloli_ui_core::{ClipShape, Rect};
use ailloli_ui_render_wgpu::LayerPass;
let layer = LayerPass::with_window_root_clip(
&[],
ClipShape::Rect(Rect::new(0.0, 0.0, 20.0, 10.0)),
);
assert!(!layer.clip.is_empty());Sourcepub fn new_isolated(cmds: &'a [DrawCmd]) -> Self
pub fn new_isolated(cmds: &'a [DrawCmd]) -> Self
Isolated layer with default effects (collapsed into main pass if noop).
§Examples
use ailloli_ui_render_wgpu::LayerPass;
let layer = LayerPass::new_isolated(&[]);
assert!(layer.isolated);Sourcepub fn with_clip_stack_isolated(
cmds: &'a [DrawCmd],
clip: ClipStackSnapshot,
) -> Self
pub fn with_clip_stack_isolated( cmds: &'a [DrawCmd], clip: ClipStackSnapshot, ) -> Self
Same as with_clip_stack but marks the layer as isolated.
§Examples
use ailloli_ui_render_wgpu::LayerPass;
use ailloli_ui_runtime::scene::ClipStackSnapshot;
let layer = LayerPass::with_clip_stack_isolated(&[], ClipStackSnapshot::empty());
assert!(layer.isolated);Sourcepub fn with_clip_stack_isolated_effects(
cmds: &'a [DrawCmd],
clip: ClipStackSnapshot,
effects: IsolatedEffects,
) -> Self
pub fn with_clip_stack_isolated_effects( cmds: &'a [DrawCmd], clip: ClipStackSnapshot, effects: IsolatedEffects, ) -> Self
Creates an isolated layer with an explicit effect set.
The layer may later collapse into the main pass when the effects are a no-op or isolation is downgraded by the configured budget.
§Examples
use ailloli_ui_render_wgpu::LayerPass;
use ailloli_ui_runtime::{scene::ClipStackSnapshot, IsolatedEffects};
let effects = IsolatedEffects::default();
let layer = LayerPass::with_clip_stack_isolated_effects(
&[], ClipStackSnapshot::empty(), effects,
);
assert!(layer.isolated);Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for LayerPass<'a>
impl<'a> !RefUnwindSafe for LayerPass<'a>
impl<'a> Send for LayerPass<'a>
impl<'a> Sync for LayerPass<'a>
impl<'a> Unpin for LayerPass<'a>
impl<'a> !UnwindSafe for LayerPass<'a>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<A> IntoClickAction<A> for Awhere
A: Clone + 'static,
impl<A> IntoClickAction<A> for Awhere
A: Clone + 'static,
§fn into_click_action(self) -> ClickAction<A>
fn into_click_action(self) -> ClickAction<A>
Implements the into_click_action helper used by this module.
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