Skip to main content

LumaMaskNode

Struct LumaMaskNode 

Source
pub struct LumaMaskNode { /* private fields */ }
Expand description

Mask inputs[0] using the BT.709 luma of the source frame (inputs[1]).

The luma (0.0–1.0) is multiplied into the base alpha channel. The source frame is sampled per frame rather than baked into the node (#1710), which is what lets an effect graph containing this node be cached across frames.

Implementations§

Source§

impl LumaMaskNode

Source

pub fn new(invert: bool) -> Self

Masks by the source frame’s own BT.709 luma, or its complement when invert.

The node holds no mask: the GPU path samples the source frame directly, so there is nothing to build or upload per frame.

Trait Implementations§

Source§

impl RenderNode for LumaMaskNode

Available on crate feature wgpu only.
Source§

fn input_count(&self) -> usize

Number of input textures required by this node (default: 1).
Source§

fn process( &self, inputs: &[&Texture], outputs: &[&Texture], ctx: &RenderContext, )

Run the GPU render pass. Read more
Source§

fn pass_count(&self) -> usize

Number of render passes (default: 1). Multi-pass nodes (e.g. gaussian blur) return 2 or more.
Source§

fn output_dimensions(&self, in_w: u32, in_h: u32) -> (u32, u32)

Output dimensions this node produces given its input dimensions. Read more
Source§

fn set_param(&self, _param: NodeParam) -> bool

Applies param to this node in place, returning whether it was taken. Read more
Source§

impl RenderNodeCpu for LumaMaskNode

Source§

fn process_cpu(&self, rgba: &mut [u8], _w: u32, _h: u32)

Masks by the luma of the buffer it is given.

That buffer is the previous node’s output, where the GPU path uses the original source frame. The two agree when this node is first in the graph; an effect in front of it makes them differ. The compositor drives only the GPU path, and its own divergence from the CPU geq in that position is a known v1 limitation (see avio::gpu_compositor’s LumaMask arm).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,