◎ Radiance Film Grain
Film grain that doesn't look like a noise filter
- image
- IMAGE
Here's the cheapest move there is for breaking the AI look: add grain. Real cameras and film have noise, AI output doesn't, and the community has made this folk-standard practice - "I add grain and it does a lot for realism" is a recurring refrain, and grain is usually step one of the "make it read as captured" checklist. Radiance Film Grain is the serious version of that move. Instead of slapping a uniform noise layer on, it simulates grain with per-profile character: silver-halide clumping, exposure-dependent density, halation, even gate weave - the registration jitter of a real film gate.
The reason it beats a generic grain node: real grain is not uniform. It clumps (silver halide crystals), it gets coarser and more visible in the shadows, it behaves differently per stock. Film Grain models that behavior through 26 camera and film-stock profiles - Kodak Vision3 stocks, Fuji Eterna, Cinestill 800T, Super 8, 16mm Ektachrome, and camera profiles like the ARRI Alexa 35 - each carrying its own grain character, halation, and weave. And it's HDR-safe: the compositing happens in float, so adding grain doesn't clamp your highlights, which is the failure mode of a grain node written for 8-bit.
The inputs that matter
- profile - the stock or camera whose character you want. This is the heart of the node; the defaults (Kodak Vision3 500T) look like film, and the Super 8/16mm options are instant "found footage."
- intensity - 0 to 3, global multiplier. 1.0 = the profile's default strength. Most AI-video cleanup wants 0.5–1.5; higher reads as heavy stock.
- seed - lock it for reproducible grain, vital if you're matching grain across a batch or a sequence (random grain per frame is a flicker generator).
- iso - 0 = use the profile's default; override up to 12800 for "I shot this in a cave." Higher ISO = more noise, that's the physics.
- size - 0.2 to 4, particle size multiplier. >1 = coarser grain.
- halation - 0 = profile default; override to push the glow around bright areas (classic for Cinestill-style looks).
- blend_mode - Additive, Overlay, or Soft Light, all HDR-safe. Additive is the film-accurate one; Overlay/Soft Light are gentler on clean renders.
- gate_weave - the film registration jitter, 0 to 0.01. A whisper of this sells "projected film" but too much looks like a broken projector.
Output is a single IMAGE at the input resolution.
Where it fits
Pair it with Radiance Depth of Field and a grade and you've got the post side of "shot on film" without re-rolling the generation. On video, this is the node that goes after your temporal smoothing - grain added pre-smoothing gets smeared into mush, which is a classic ordering mistake. And for clean digital renders that need to sit next to real footage, matching the footage's grain profile is the difference between "composited" and "shot together."
Install
In fxtdstudios/radiance - Manager search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_linux.txt # or windows/mac_silicon
Restart after; Linux needs libopenexr-dev before pip, and the heavy dependency set makes first boot slow. If Manager's security level blocks the install, clone manually per the README.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| profile | COMBO | Kodak Vision3 500T 5219 | Camera or film stock profile. Film stocks include halation, gate weave, and silver halide grain character. |
| intensity | FLOAT | 1.000–3 | Global grain intensity multiplier. 1.0 = profile default. |
| seed | INT | 00–18446744073709550000 | Random seed for reproducible grain patterns. |
| sizeopt | FLOAT | 1.00.2–4 | Grain particle size multiplier. >1 = coarser, <1 = finer. |
| isoopt | INT | 00–12800 | Override ISO (0 = use profile default). Higher ISO = more noise. |
| halationopt | FLOAT | 0.000–2 | Override halation strength (0 = use profile default). |
| blend_modeopt | COMBO | Additive | Grain compositing mode. All modes are HDR-safe in v3.0. |
| gate_weaveopt | FLOAT | 0.00000–0.01 | Override gate weave (0 = use profile default). Film registration jitter. |
| use_gpuopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |