LayerFilter: Add Grain
Add Grain
- image
- image
Film grain is one of the cheapest, most effective ways to make an AI image stop looking like an AI image. Diffusion output tends toward a clean, slightly plasticky, too-perfect surface - no sensor noise, no film texture, the uncanny smoothness that reads as "generated" at a glance. Add Grain sprinkles a controllable layer of grain over the top, and that little bit of texture does a surprising amount of work toward a photographic, filmic feel. It's a finishing node, the last thing before you save.
The mechanism is exactly what it sounds like: it generates a noise pattern and blends it into the image. The three controls shape what that grain looks like. grain_power (0–1, default 0.5) is the intensity - how visible the grain is. This is your main dial; a little goes a long way, and pushing it high gets you a heavy, gritty analog look. grain_scale (0.1–10, default 1) is the size of the grain particles - low values give fine, tight grain like a slow film stock or a clean sensor, higher values give chunky, coarse grain like a pushed high-ISO shot. grain_sat (0–1, default 1) controls the grain's color saturation: at 1 you get colored grain (chroma noise, like real film), at 0 it's monochrome luminance grain only, which is cleaner and often more tasteful. Between them you can dial in anything from a subtle texture that just kills the plastic sheen to an overt vintage-film aesthetic.
One input, image, one output, image. It slots in at the very end of a pipeline.
Install is the pack standard: search "ComfyUI Layer Style" in ComfyUI Manager, or cd ComfyUI/custom_nodes && git clone https://github.com/chflame163/ComfyUI_LayerStyle, then pip install -r requirements.txt and restart. No models to download.
Two bits of practical advice. First, restraint - the most common mistake is too much grain. Start grain_power low (0.2–0.3 is often plenty), and remember that grain looks stronger at 100% zoom than it does at the size people actually view the image, so what feels subtle on your monitor may be right. Second, order matters: add grain last, after upscaling and any sharpening, because running an upscaler or a sharpen after the grain will either smear it or amplify it into something you didn't intend. If you're chasing a specific film look, drop grain_sat toward 0 for cleaner monochrome grain and nudge grain_scale up for a coarser stock. There's also a compositing use most people miss: a light, uniform grain laid over a finished composite helps tie mismatched elements together - a subject shot on one sensor, a background from another, an AI-generated fill - because a shared noise floor across the whole frame reads as "one photograph" to the eye. It's the same reason retouchers add grain back after cleanup. And grain quietly hides banding in smooth gradients like skies, where 8-bit output otherwise shows visible steps. And the usual LayerStyle caveat: if the node doesn't appear after install, the pack failed to import on a dependency conflict - check the console, "Try Fix" in Manager, reinstall requirements.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| grain_power | FLOAT | 0.500–1 | — |
| grain_scale | FLOAT | 1.00.1–10 | — |
| grain_sat | FLOAT | 1.000–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |