Skip to content

Nodes · Filter

Regrain

Filterv1core

Overview

Puts the plate's OWN grain back on comped work: measures it from the plate and re-applies it per-brightness. Better than synthetic grain when you have the plate.

How to

How-to

  1. Wire the plate and the comp; press Measure so the node reads the plate's own grain.
  2. amount and per-channel gains re-apply it per brightness; grain_size matches the scan.
  3. Without a measured fingerprint the node reads one from the centre of the plate on every frame; Measure once and the read is skipped.
  4. detail_guard (on) keeps the re-applied grain honest. The residual the node re-uses is plate minus degrain, and that is only grain where the degrain took only grain: a specular edge, or the texture of something you then painted out of the comp, would come back as a streak. With the guard on, a residual is capped at the plate's measured grain level and, where the comp differs from the degrained plate (a paint-out), synthetic grain of the right amplitude takes over; an untouched pixel keeps the plate's real grain. Turn it off to re-apply the residual verbatim.

Inputs

InputWhat it takes
compthe comped result
platethe original plate, for measurement
degrainthe degrained version, for the difference
masklimits the effect to this matte — the engine's universal mask slot, applied for every node that declares it

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
amountFloat1.0How much grain to lay down. 1 = matches the analysed plate.
r_gainFloat1.0Per-channel grain strength — film grain is usually strongest in blue.
g_gainFloat1.0Per-channel grain strength — film grain is usually strongest in blue.
b_gainFloat1.0Per-channel grain strength — film grain is usually strongest in blue.
generativeFloat0.00 = re-use the plate's real grain; 1 = synthesize it from the fingerprint (no plate needed).
luma_compensationFloat1.0How much the grain follows the COMP's brightness rather than the plate's. 1 = fully physical: grain scales with the light it sits on.
grain_sizeFloat1.0Correlation radius of synthetic grain. 0 is white noise (video hash); larger clumps like film.
seedInt0The random pattern's starting point. Change it for a different pattern of the same character; keep it to reproduce a frame exactly.
mixFloat1.0Dissolves the effect back toward the input. 0 = off (bit-identical), 1 = full effect.
detail_guardBooltrueGrain only where the degrain took only grain. On (the default): the residual is clamped to the measured grain sigma and the pixels the comp changed take synthetic grain, so a sharp highlight's structure and a paint-out's texture do not come back as grain (a streak where the blood was, over-grainy lights). Off: the plate's residual verbatim.
fingerprint_rLut0 pointsThe analysed grain response curve — grain amplitude per brightness — per channel. Editable in the curve editor.
fingerprint_gLut0 pointsThe analysed grain response curve — grain amplitude per brightness — per channel. Editable in the curve editor.
fingerprint_bLut0 pointsThe analysed grain response curve — grain amplitude per brightness — per channel. Editable in the curve editor.
disabledBoolfalseBypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back.
labelTextA note shown under the node in the graph — what this node is FOR. Never affects the render or the cache.
hide_inputBoolfalseDraw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap).