Film Grain PRO
The fastest way to make an AI image look shot on film
- image
- IMAGE
Most people spot an AI image by the hands. The smarter ones spot it by what's missing: grain. A real photo has texture everywhere - even in a clean sky there's sensor or film noise, and the moment your render has perfectly flat, smooth gradients, it reads as synthetic no matter how good the model was. Film Grain PRO is the node in the Post Processing PRO pack that fixes exactly that. It drops physically-plausible noise over the frame with control over how chunky and how colored that noise is. Add it after the VAE decode, and your output stops looking like a render and starts looking like it was captured.
It's not the only grain node in the ComfyUI ecosystem - WAS Node Suite has been doing generic film grain for years - but this one treats grain as something with structure rather than a random TV-static overlay, which is most of the battle.
How it works
Under the hood it's simpler than the marketing suggests, and that's a good thing. The node generates Gaussian-distributed noise - the same distribution real film/sensor noise follows - and adds it to the image linearly, like exposure variance rather than a hard overlay. The two things that make it feel like film rather than digital noise:
scalecontrols grain clump size. At 1.0 the noise is generated at full resolution and micro-blurred so it doesn't read as stiff 1×1 pixels (the moiré trap). Above 1.0, the noise is generated at a lower resolution and upscaled with cubic interpolation, so the grains physically clump together like silver-halide crystals on an emulsion.monochromatictoggles between independent RGB noise and a single luminance noise map applied to all three channels - which is exactly what real black-and-white film grain looks like versus color film's chroma mottle.
The inputs that matter
image- your IMAGE tensor, straight from a VAE decode.strength(default 0.15, 0–2) - the master amount. The default is deliberate subtlety; for a visible "35mm" look most people land around 0.3–0.5.scale(default 1.0, 0.5–5) - grain chunkiness. This is the one beginners underuse; bump it to 2–3 for a heavy-grain film stock feel.monochromatic(default off) - flip on for a classic B&W grain that doesn't introduce color speckle.
The single output is an IMAGE of the same size, which you wire straight into your Save Image / Preview node.
Installing it
Film Grain PRO is one of 14 nodes that all ship in the same pack, so install once and you get everything. Easiest path is ComfyUI Manager - search "Post Processing PRO" and hit install. Otherwise:
cd ComfyUI/custom_nodes
git clone https://github.com/Guillaume-127/ConfyUI_Post_Processing_PRO
Then restart ComfyUI. There's no requirements.txt, no model downloads, nothing to fetch - the node runs on numpy + OpenCV, which ComfyUI already ships. One honest gotcha: the README's own install snippet contains a placeholder URL (yourusername), so copy the URL from the GitHub page rather than from the README, or just use Manager.
Where people get tripped up
The pack's stated philosophy is that defaults are deliberately near-invisible - realism through accumulation, not heavy-handed filters. So if 0.15 strength looks like nothing, that's working as intended; it's there to stack with the pack's other subtle effects. Crank strength up a few notches and you'll see it. For portraits, this plays beautifully after Subsurface Diffusion PRO and Sensor Heat Noise PRO - subsurface softens skin, heat noise grunges the shadows, and Film Grain unifies the whole frame into "captured on a sensor" territory.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| strength | FLOAT | 0.150–2 | — |
| scale | FLOAT | 1.00.5–5 | — |
| monochromatic | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |