Nodes/ComfyUI-ProPost/ProPostFilmGrain
ComfyUI Node

ProPostFilmGrain

Real film grain, not TV static

By digitaljohn·Created 2 years ago·Updated about a year ago· 211
ProPostFilmGrain
  • image
  • IMAGE
gray_scalefalse
grain_type
grain_sat0.50
grain_power0.70
shadows0.20
highs0.20
scale1.00
sharpen0
src_gamma1.00
seed1

AI images have a specific kind of too-clean look - skin like plastic, shadows with no texture, everything just a bit too airbrushed. Grain is one of the cheapest ways to break that up, and it's exactly the trick the photorealism crowd reaches for: adding subtle noise after generation makes an image read as captured instead of generated. ProPostFilmGrain is that trick as a node, and it's the flagship of the ProPost pack for a reason - it does noticeably more than a random-noise-and-blend hack.

What it actually does

Most "film grain" nodes are just noise overlaid at a fixed opacity, and it shows - too uniform, too flat, nothing like actual film stock. This one is a direct port of the Filmgrainer library, which builds grain that behaves like real film: heavier in the shadows or highlights depending on how you weight it, with distinct grain patterns rather than one blob of static. You pick a grain_type - Fine, Fine Simple, Coarse, or Coarser - and the node generates that pattern, tints it by grain_sat, and blends it back into the image weighted by shadows and highs.

The inputs that matter

  • grain_type - Fine for something you'd barely notice, Coarser for a visibly gritty, pushed-film look. Start with Fine or Fine Simple; Coarse and Coarser read as a deliberate stylistic choice, not a subtle realism pass.
  • grain_power (default 0.7) - overall intensity. This is the one dial to touch first.
  • shadows / highs (both default 0.2) - how strongly grain shows up in dark vs. bright areas. Real film grain is more visible in shadows, so leaning shadows up and highs down is usually the realistic move.
  • grain_sat (default 0.5) - grain color saturation. Push it toward 0 for classic monochrome grain even on a color image; gray_scale goes further and desaturates the whole output.
  • seed - fixes the grain pattern so it's reproducible.
  • scale, sharpen, src_gamma - secondary controls. scale renders the grain at a different resolution before compositing back (cheaper, and changes the apparent grain size); sharpen runs extra sharpening passes; src_gamma compensates the input's gamma before grain is applied. Leave these at default until you know you want them.

Single input is image, single output is IMAGE - wire it straight after your VAE decode, before (or after) Vignette and Apply LUT.

Installing it

Easiest path: open ComfyUI Manager, search propost, install, restart. Manually, it's the standard drill:

cd ComfyUI/custom_nodes
git clone https://github.com/digitaljohn/comfyui-propost.git
pip install -r requirements.txt

Restart ComfyUI afterward - a browser refresh alone won't pick up a newly installed node pack.

Where people get tripped up

This node has genuinely good reception in the community - it's one of the more praised post-processing packs out there, with people calling out that it actually looks like grain instead of the generic noise-generator look most alternatives produce. The one real workflow tip worth stealing: if you're running a batch through it, set seed to a fixed value first. A random seed regenerates the grain pattern from scratch on every single image in the batch, which is slower than it needs to be - pin it and you get consistent, faster runs.

The other thing to know going in: grain_power at 0.7 is already a fairly present amount of grain. If your goal is "just enough noise to break up AI smoothness" rather than "visible film stock," drop it down - 0.15–0.3 with shadows bumped slightly is a good starting range before you decide you want more. And if the pack doesn't show up in the node search after a manual install, it's almost always the missing pip install -r requirements.txt step or a partial restart - kill ComfyUI fully rather than just reloading the page.

CategoryPro Post/Camera Effects

Inputs (11)

NameTypeDefaultDescription
imageIMAGE
gray_scaleBOOLEANfalse
grain_typeCOMBO4 options: Fine, Fine Simple, Coarse, Coarser
grain_satFLOAT0.500–1
grain_powerFLOAT0.700–1
shadowsFLOAT0.200–1
highsFLOAT0.200–1
scaleFLOAT1.000–10
sharpenINT00–10
src_gammaFLOAT1.000–10
seedINT11–18446744073709550000

Outputs (1)

NameTypeDescription
IMAGEIMAGE