Noise
Film grain with eleven personalities
- image
- IMAGE
Flat, poreless AI images are the single biggest tell that something was generated, and grain is the cheapest fix. The catch is that most "add noise" nodes just scatter uniform static - which looks like static, not film. This Noise node gives you eleven distributions to play with, from proper gaussian grain to salt-and-pepper sensor error to Poisson shot noise, in both monochrome and color. If you're chasing the photorealism finish line, the grain you add at the end is doing more heavy lifting than you'd think, and this is the node to do it with.
How it works
It generates a noise field per the chosen distribution and blends it into the image at opacity. The noise_level is the master amount, but here's the author's honest warning in the description: each distribution needs a different level before anything shows up. Gaussian noise appears at low levels; Poisson and Rayleigh need a much higher setting to be visible at all. So the slider isn't universal - the distribution you pick changes what "100" means.
The distributions worth knowing:
- gaussian - the workhorse. Smooth, filmic, the default for a reason
- dark-dependent gaussian - noise that scales with shadow areas; this one's great because real sensor noise is worse in the dark
- poisson / speckle - shot-noise flavor, more physical, subtle at low levels
- salt & pepper - sparse black/white pixels, the "dead pixel" sensor look
- laplacian / exponential / rayleigh / gamma / binary - exotic textures for specific vibes
type picks color noise (independent per-channel, can look rainbow if overdone) vs. monochromatic (single-channel, reads as real film grain). Start monochromatic.
Inputs that matter
- noise_level - amount, 0–100. Remember: distribution-dependent
- type - "monochromatic noise" for film grain; "color noise" for sensor character
- distribution - the personality. Gaussian is the safe first stop
- opacity - Photoshop-style blend strength. The clean way to dial in subtlety
One IMAGE in, one IMAGE out.
Install
Part of Photography Nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/TrophiHunter/ComfyUI_Photography_Nodes
Restart, look under TrophiHunter/Photography (ComfyUI Manager: "Photography Nodes"). No requirements, no models.
Where people get burned
The big one is cranking noise_level to 100 on gaussian and wondering why the image is static - that's a mix of a too-high level and, often, forgetting opacity is a separate 0–100 dial. The subtle-but-plausible recipe is monochromatic, gaussian, opacity 20–40, and a low noise_level, dialed until skin stops looking waxy. Also: grain goes last in the chain, after sharpening (sharpening amplifies grain into crawly texture), which matches the author's own ordering - Noise sits after Chromatic Aberration and before Sensor Dust, near the end of the capture-degradation stack.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| noise_level | FLOAT | 0.00000–100 | — |
| type | COMBO | color noise | 2 options: color noise, monochromatic noise |
| distribution | COMBO | gaussian | 11 options: gaussian, uniform, dark-dependent gaussian, poisson, salt & pepper, speckle, +5 |
| opacity | INT | 1000–100 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |