ComfyUI Node

MX_Noise

Film grain that makes AI images look shot, not rendered

By Intersection98·Created 2 years ago·Updated 2 years ago· 13
MX_Noise
  • image
  • IMAGE
intensity0.20
scale10
temperature0
vignette0

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 - 0 to 1, default 0.2. How much grain shows. 0.05–0.15 is the subtle "photo" range; past 0.3 grain is clearly visible and starts to look intentional.
  • scale - 1 to 100, default 10. The size of the noise features - larger scale = coarser, more filmic clumps; smaller = fine digital-looking texture.
  • temperature - -100 to 100, default 0. Warm (positive) or cool (negative) color cast, on top of the grain.
  • vignette - 0 to 10, default 0. 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.

Categorypostprocessing/Effects

Inputs (5)

NameTypeDefaultDescription
imageIMAGE
intensityFLOAT0.200–1
scaleFLOAT101–100
temperatureFLOAT0-100–100
vignetteFLOAT00–10

Outputs (1)

NameTypeDescription
IMAGEIMAGE