pub enum BarrierRequirement {
Global,
PaddedLocal(PaddingRect),
Absolute(PxRect),
}Expand description
Defines the sampling requirements for a rendering command that needs a barrier.
Variants§
Global
The command needs to sample from the entire previously rendered scene. This will cause a full-screen texture copy.
PaddedLocal(PaddingRect)
The command needs to sample from a region relative to its own bounding box.
- Sampling padding: The region from which pixels are read (e.g., blur needs to read pixels outside the target area). This determines the texture region captured before the command executes, while the write target remains the component’s measured size.
For most cases without special batching requirements, set a uniform padding value. For effects like blur that need large sampling areas but have small target areas, use large sampling padding so enough source pixels are available while batching still relies on the component’s bounds.
§Examples
Simple case (uniform sampling padding):
use tessera_ui::renderer::command::{BarrierRequirement, PaddingRect};
use tessera_ui::Px;
let req = BarrierRequirement::PaddedLocal(PaddingRect::uniform(Px(10)));
let _ = req;Blur optimization (large sampling area):
use tessera_ui::renderer::command::{BarrierRequirement, PaddingRect};
use tessera_ui::Px;
let req = BarrierRequirement::PaddedLocal(PaddingRect::uniform(Px(75)));
let _ = req;Absolute(PxRect)
The command needs to sample from a specific, absolute region of the screen.
Implementations§
Source§impl BarrierRequirement
impl BarrierRequirement
pub const ZERO_PADDING_LOCAL: Self
Sourcepub const fn uniform_padding_local(padding: Px) -> Self
pub const fn uniform_padding_local(padding: Px) -> Self
Creates a PaddedLocal barrier requirement with uniform sampling padding on all sides.
Trait Implementations§
Source§impl Clone for BarrierRequirement
impl Clone for BarrierRequirement
Source§fn clone(&self) -> BarrierRequirement
fn clone(&self) -> BarrierRequirement
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BarrierRequirement
impl Debug for BarrierRequirement
Source§impl PartialEq for BarrierRequirement
impl PartialEq for BarrierRequirement
impl Copy for BarrierRequirement
impl StructuralPartialEq for BarrierRequirement
Auto Trait Implementations§
impl Freeze for BarrierRequirement
impl RefUnwindSafe for BarrierRequirement
impl Send for BarrierRequirement
impl Sync for BarrierRequirement
impl Unpin for BarrierRequirement
impl UnwindSafe for BarrierRequirement
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,
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