MX_Noise
Film grain that makes AI images look shot, not rendered
- image
- IMAGE
MX_Noise is the pack's film-grain node - and it's the one post-processing trick the photorealism crowd swears by. Adding subtle noise in post is one of the highest-leverage ways to make a too-clean AI render read as "captured" instead of "generated," because real photos are never pixel-perfect smooth. This node bakes in a bit more than raw grain, though: it's actually a mini film-emulation package.
It's part of Intersection98/ComfyUI-MX-post-processing-nodes, and under the hood it's implemented as the pack's FilmGrain class. It slots in right after your VAE decode, before the save node.
How it works
The node generates Perlin noise - smooth, organic-looking noise rather than random static - and blends it over the image at your intensity. Perlin is the right choice here: it produces the soft, clumpy grain of real film rather than the harsh speckle of digital static. On top of the grain it can apply two extra treatments: temperature shifts the color balance (warm/cool), and vignette darkens the corners of the frame. So in one node you can add grain and a color cast and corner shading - which is basically the entire "make it look like a photo" post-processing checklist from the realism playbooks.
The inputs that matter
image- your IMAGE tensor.intensity-0to1, default0.2. How much grain shows.0.05–0.15is the subtle "photo" range; past0.3grain is clearly visible and starts to look intentional.scale-1to100, default10. The size of the noise features - larger scale = coarser, more filmic clumps; smaller = fine digital-looking texture.temperature--100to100, default0. Warm (positive) or cool (negative) color cast, on top of the grain.vignette-0to10, default0. Corner-darkening strength. A tiny bit (1–2) adds a lot of "real lens" credibility.
Output is a single IMAGE at the input resolution.
Install
Standard MX pack install. ComfyUI Manager (search MX or ComfyUI-MX-post-processing-nodes), or:
cd ComfyUI/custom_nodes
git clone https://github.com/Intersection98/ComfyUI_MX_post_processing-nodes
cd ComfyUI_MX_post_processing-nodes
pip install -r requirements.txt
Restart ComfyUI; it's under postprocessing/Effects. No models, no downloads - the Perlin noise is generated procedurally in the node itself.
Where people get burned
The classic mistake is dialing grain up to see it, then forgetting it's there - past ~0.25 it starts degrading fine detail and can make skin look mottled, so check it at full zoom on a face before saving. Second, grain plus the pack's other effects can stack into a mess: if you're also using MX_ColorCorrect or a LUT, add the grain last in the chain so it sits on top of everything like real film grain would. Third, scale interacts with resolution - a scale that looks right on 1024px will look too coarse or too fine at other sizes. And a subtle behavioral note: the noise is regenerated per run (it's procedural, not seeded), so the exact grain pattern changes every time you re-queue - harmless for stills, but something to know if you're compositing multiple frames and want the grain to match.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| intensity | FLOAT | 0.200–1 | — |
| scale | FLOAT | 101–100 | — |
| temperature | FLOAT | 0-100–100 | — |
| vignette | FLOAT | 00–10 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |