Interfaces

FilmGrainProps

Procedural film grain over a <Group>, clipped to what the group actually drew. A child of Group, not a paint: it reads the group's own pixels, so the group is rasterised once per frame while one is attached.

color alone gives single-colour grain; color with secondColor splits the grain into two complementary halves; neither keeps the noise's own RGB and takes its strength from opacity.

Properties

blendMode?

optional blendMode?: BlendMode;

How the grain composites over the group. Defaults to 'srcOver'. Not Animated: a value slot carries a number, and an enum only reaches one through a handle write, which resolves the name to its wire code.


color?

optional color?: Color;

Single-colour grain, its alpha the grain's opacity.


density?

optional density?: Animated<number>;

How much of the group the grain reaches, 0–1. Defaults to 0.5.


opacity?

optional opacity?: Animated<number>;

Colourless grain only: overall strength, 0–1. Defaults to 1. It is not written in the other two modes, so a handle write there re-encodes and changes nothing - set the colour's alpha instead.


ref?

optional ref?: NodeHandle;

A handle from useNode(), for patching the grain without a render.


secondColor?

optional secondColor?: Color;

With color, the second half's colour. A handle keeps one colour pool, so unlike color this one re-encodes rather than patching; live channels still work, written as [r, g, b, a] with shared values in it.


seed?

optional seed?: Animated<number>;

The pattern's seed. Defaults to 0.


size?

optional size?: Animated<number>;

Grain size in points - larger is coarser. Defaults to 4.

On this page