Skip to main content

ShapeMaskNode

Struct ShapeMaskNode 

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

Clear the alpha of inputs[0] outside a rectangle of the source frame.

Pixels inside the rectangle keep their alpha; all others are made fully transparent. The rectangle reaches the shader as a uniform, so the node holds no mask buffer and uploads nothing per frame (#1710).

Implementations§

Source§

impl ShapeMaskNode

Source

pub fn new(x: u32, y: u32, width: u32, height: u32, invert: bool) -> Self

Keeps the pixels inside [x, x + width) x [y, y + height) of the source frame, or those outside it when invert.

Trait Implementations§

Source§

impl RenderNode for ShapeMaskNode

Available on crate feature wgpu only.
Source§

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

Takes NodeParam::ShapeMaskRect, so an animated rectangle moves without the graph being rebuilt around it.

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§

impl RenderNodeCpu for ShapeMaskNode

Source§

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

Tests the rectangle against the coordinates of the buffer it is given.

Those are the previous node’s output pixels, where the GPU path evaluates the rectangle in the original source frame’s pixels. The two agree until a node that resizes (a ScaleNode) runs in front of this one.

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,