ComfyUI Node

LC Film Grain

The cheapest realism you'll buy all day

By lonecatone23·Created 2 months ago·Updated about 12 hours ago· 19
LC Film Grain
  • image
  • image
grain_size1.20
strength0.50
radius_variation0.00
color_grain0.00
seed8675309
softness0.8

AI images look fake for a bunch of reasons, but the one with the cheapest fix is this: real cameras have noise, and diffusion output doesn't. LC Film Grain (LCFilmGrain) is the LC123 pack's procedural grain generator - it synthesizes Gaussian-blurred noise and adds it to your image with a luminance-weighted touch. It's the single move that makes a render read as "captured" instead of "generated," and this is a well-made version of it.

The KB's post-processing doc is blunt about the pattern: grain is the #1 folk remedy for the AI look, so much that people leave ComfyUI for After Effects just to add it. This node keeps that job inside the graph.

How it works

The grain is fully procedural - no grain textures, no model, just noise and a Gaussian blur. The node generates random noise (seeded, so it's reproducible), blurs it with a kernel whose radius is your grain_size scaled relative to a 1024px reference, and adds it back weighted by luminance: midtones get more grain, shadows and highlights less (4·luma·(1−luma)). That weighting is why it looks like film and not static - real grain is more visible where the tone sits mid-frame.

The controls that matter:

  • grain_size (0.7–4) - the physical grain radius; it scales with resolution so grain at 2048px looks the same as at 512px. Default 1.2 is a good starting point.
  • strength - overall amount. 0.5 default is subtle; push toward 1 for visible grain.
  • color_grain - 0 is mono grain (the classic film look), 1 is per-channel chroma grain (color noise, Kodak slide style). The in-between blends.
  • seed - reproducibility. Same seed, same grain.
  • softness (optional, 0.4–2) - multiplies the blur radius; higher = softer, lower = harsher crunchy grain.
  • radius_variation - adds per-pixel radius jitter for irregular, non-grid grain.

Why you'd reach for it

Because it's deterministic, instant, and doesn't touch a model - the exact class of operation the post-processing doc says you should reach for instead of burning a diffusion pass. Add it before Save Image, or after upscaling (grain should go after you scale, or the scaler will smooth it away). If you're doing film looks, it stacks beautifully with the pack's Film Stock nodes - stock first for the tone curve, then grain on top.

Install

Part of ComfyUI_LC123_nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes

or ComfyUI Manager, then restart. Pure torch - no dependencies, no downloads.

Where people get burned

Two habits to avoid: cranking strength past ~0.7 on a clean render, which stops reading as film and starts reading as noise; and adding grain before upscaling, which defeats it. Also note this is procedural, not scanned-real - for a faithful Tri-X grain pattern you'd want a texture overlay, but for "make the AI look less AI" this is exactly right. The pack is a quiet niche collection with no community lore to speak of, so trust the README's "Film grain = grain overlay" line and your eyes.

CategoryLC123/image

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
grain_sizeFLOAT1.200.7–4Grain radius at 1024px reference; scales with resolution.
strengthFLOAT0.500–1
radius_variationFLOAT0.000–0.5
color_grainFLOAT0.000–10 = mono grain, 1 = per-channel chroma grain
seedINT86753090–4294967295
softnessoptFLOAT0.80.4–2

Outputs (1)

NameTypeDescription
imageIMAGE