Film Grain

Brief Description

Adds realistic synthetic film-grain to the image.

Controls

Parameter / Script Name Type Default Function
Enabled / enabled Boolean On
Red / process_red Boolean On Enable the red channel in output. Otherwise if there's a source the content of the main source is returned instead, else 0.
Green / process_green Boolean On Enable the green channel in output. Otherwise if there's a source the content of the main source is returned instead, else 0.
Blue / process_blue Boolean On Enable the blue channel in output. Otherwise if there's a source the content of the main source is returned instead, else 0.
Alpha / process_alpha Boolean On Enable the alpha channel in output. Otherwise if there's a source the content of the main source is returned instead, else 0.
Method / method Choice Precise Fast
Precise
Samples / iterations Float 20 Number of samples used to render the grain. Higher values mean higher quality but longer render times.
Grain Radius / grain_radius_mean Float 0.05 Average size of grains. Higher values increase render time.
Grain Diffusion / grain_radius_std Float 0 Standard deviation of grain radius distribution. Typically between 0 and Grain Radius.
Smoothing / sigma Float 0.8 Sigma of a gaussian; higher values increase smoothing. For better quality increase samples, at the cost of render time.
Color Precision / lut_size Choice 1024 Controls the lookup table size used to reconstruct grain:
256
512
1024
2048
4096
Preset / preset Choice Custom Custom
Kodak 5245
Kodak 5248
Kodak 5287
Kodak 5293
Kodak 5296
Kodak 5298
Kodak 5217
Kodak 5218
Kodak Black and White
Smoothness / smoothness Float 0
RGB Blur / rgb_blur Float 3D 0, 0, 0
Amount / amount Float 3D 0.208, 0.2655, 0.6
Gain / cc_gain Color 1, 1, 1, 1
Gamma / cc_gamma Color 1, 1, 1, 1
Saturation / cc_saturation Color 1, 1, 1, 1
Scale / scale Float 2D 1, 1
Blend Mode / blend_mode Choice Add

Add: Ac + Dc — Adds source to destination.

Color Dodge: if Ac < 1 → min(1, Bc / (1 - Ac)); else 1.

Lighten: max(Ac, Bc).

Linear Dodge: min(Ac + Bc, 1).

Screen: Ac + Bc - Ac * Bc.

Hard-light: multiply/screen depending on Ac.

Hard Mix: vivid-light threshold.

Linear Light: burn/dodge depending on Ac.

Overlay: multiply/screen depending on Bc.

Pin Light: removes mid-tones.

Soft Light: multi‑branch soft‑light formula.

Vivid Light: color burn/dodge.

Difference: abs(A - B).

Divide: Ac / Bc (if Dc > 0 and Ac > 0).

Exclusion: Ac + Bc - 2AcBc.

Minus: Ac - Bc.

Subtract: Bc - Ac.

Color: SetLum(Ac, Lum(Bc)).

Hue: SetLum(SetSat(Ac, Sat(Bc)), Lum(Bc)).

Luminosity: SetLum(Bc, Lum(Ac)).

Saturation: SetLum(SetSat(Bc, Sat(Ac)), Lum(Bc)).

Replace: Ac.

Destination Atop: Bca × Aa + Aca × (1 - Ba).

Destination Out: Ba * Bc * (1 - Aa).

Destination Over: Aa * (1 - Ba) + Bc.

Destination In: Bc * Aa.

Source Atop: Ac * Ba + Bc * (1 - Aa).

Source Out: Ac * (1 - Ba).

Normal: Ac + Bc * (1 - Aa).

Source In: Ac * Ba.

Xor: Ac * (1 - Ba) + Bc * (1 - Aa).

Average: (Ac + Bc) / 2.

Conjoint Over: branch based on Aa ≤ Ba.

Disjoint Over: branch based on Aa + Ba ≥ 1.

Geometric: 2AcBc / (Ac + Bc).

Grain Extract: Bc - Ac + 0.5.

Grain Merge: Bc + Ac - 0.5.

Hypot: sqrt(Ac² + Bc²).

Reflect: Aa² / (1 - Ba).

Color Burn: 1 - min(1, (1 - Bc) / Ac).

Darken: min(Ac, Bc).

Linear Burn: Bc + Ac - 1.

Multiply: Ac * Bc.

Multiply (Math): Ac * Bc (negatives preserved).

RGB Seed / seed Color 0, 1, 2, 0 Seed of the random distribution for each channel. Set channels to the same value for black‑and‑white noise.
Vary with time / vary_with_time Boolean On When enabled, the seed is modulated by time, causing grain to change every frame.
Mask / mask Image -
Mix / mix_with_source Float 1 Dissolves between the original image at 0 and the image with the effect applied at 1.