Nodes/Film Grain LTXV/Film Grain LTXV
ComfyUI Node

Film Grain LTXV

The Two-Slider Trick That Kills the AI Look

By boobkake22·Created 8 months ago·Updated 5 days ago· 0
Film Grain LTXV
  • images
  • IMAGE
grain_intensity0.10
saturation0.50

If you've generated video with LTX and stared at the result wondering why it still looks generated, the answer is often one missing step: grain. Real footage has noise; diffusion output is eerily clean, and clean is what your eye flags as fake. Adding a little texture back is the cheapest anti-AI move in post - cheap enough that people do it as step seven of their workflow and never think about it again. This node is exactly that pass, and nothing else.

What it is

FilmGrainLTXV existed first as LTXVFilmGrain, a utility buried inside Lightricks' official ComfyUI-LTXVideo pack. This package is that node, cut out and shipped on its own - the pyproject credits Andrew Kvochko (Lightricks) under the handle boobkake22. The README says it in one line: the LTXVideo repo is noisy, the node is useful by itself, so here it is without the video-model baggage. That's the whole pitch, and it holds up. No model files, no requirements.txt, nothing heavy to babysit.

How it works

Mechanically it's one of the simplest nodes you'll find, and reading the ~40-line class is reassuring. For each image in your batch (video frames included) it generates standard Gaussian noise with torch.randn, then weights the channels - red noise ×2, blue ×3 - which gives the grain a faint color cast instead of grey static. The saturation input then mixes that colored noise against monochrome noise (the green channel broadcast to all three channels), so 0 is black-and-white grain and 1 is fully chromatic. Everything is scaled by grain_intensity and added to the pixels in-place, clamped to [0, 1]. It moves the batch to the active device, processes frames one at a time to keep memory flat, and hands the tensor back.

No VAE, no latent space, no diffusion re-pass. It touches pixels and only pixels, which is exactly the point: this is a deterministic filter you should reach for instead of burning a generation to "fix" the look.

The inputs that matter

Only three, and you'll mostly touch two.

  • images (IMAGE) - a batch of frames. Wire it after your final VAE decode, just before the video encoder or preview node.
  • grain_intensity (FLOAT, 0–1, default 0.1) - strength. The default is honestly on the strong side; people in the wild run it around 0.01–0.05 for that "barely there" texture.
  • saturation (FLOAT, 0–1, default 0.5) - how much color the grain carries. 0 is classic monochrome grain, 1 is the chromatic look.

The output is an IMAGE of the same shape and batch, so it wires straight back into whatever the input came from.

Install

It's on the Comfy Registry, so ComfyUI Manager → "Install Custom Nodes" and search "Film Grain LTXV" gets you there. Or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/boobkake22/ComfyUI-FilmGrainLTXV

Then restart ComfyUI. Because the only dependencies are comfy and torch - both already installed - there's no venv step and no pip install.

Where people get burned

  • The node renamed itself. The original lived in ComfyUI-LTXVideo as LTXVFilmGrain; this pack registers FilmGrainLTXV. Old workflows embedding the old class name will show a missing-node error and won't auto-resolve - people genuinely got stuck on this ("LTXVFilmGrain can't find anywhere"). Swap in the new node and re-wire.
  • Grain before upscaling is a mistake. If you grain then upscale, the upscaler treats noise as detail and you get a smeared mess. Add grain after the final upscale, on the output that's going to the encoder.
  • It's per-frame independent noise. That reads as sensor noise, not the clumped, organic pattern of scanned film. Perfect for breaking the clean AI look; wrong tool if you're chasing a specific film stock.
  • It's additive and clamps. High intensity flattens highlights. Keep it subtle - the subtle setting is the good one.
Categoryeffects

Inputs (3)

NameTypeDefaultDescription
imagesIMAGE
grain_intensityFLOAT0.100–1
saturationFLOAT0.500–1

Outputs (1)

NameTypeDescription
IMAGEIMAGE