Nodes/VRGameDevGirl Video Enhancement Nodes/๐ŸŽž๏ธ Fast Film Grain
ComfyUI Node

๐ŸŽž๏ธ Fast Film Grain

Film Grain Without Murdering Your VRAM

By vrgamegirl19ยทCreated about a year agoยทUpdated about 21 hours agoยท 682
๐ŸŽž๏ธ Fast Film Grain
  • images
  • IMAGE
โ—„grain_intensity0.040โ–บ
โ—„saturation_mix0.50โ–บ
โ—„batch_size4โ–บ

AI video is sterile by default. Perfect gradients, zero noise, that polished-CGI look that screams "generated." The cheapest fix in the book is film grain, and FastFilmGrain is a per-frame grain node that won't turn your 8GB card into a puddle. It's part of the VRGameDevGirl enhancement set, so it's tuned for running across hundreds of frames, not a single still.

The node adds controllable noise to each frame and blends it back in. Two knobs matter: grain_intensity (0 to 1, default 0.04 - that's a subtle starting point, you'll rarely want more than ~0.1 for a film look) and saturation_mix (0 = grayscale grain, 1 = full RGB noise). If you set saturation_mix low you get that classic monochrome grain that reads as "cinema"; crank it up and you get chroma noise, which reads as... 2006. Your call.

Why the batch_size knob is there

Here's where this node differs from the toy ones: it has a batch_size input (default 4, up to 500) that controls how many frames get processed in one pass. The README is explicit - this exists to stop OOM crashes on long or high-res video. Grain is embarrassingly parallel, so you can safely feed it big batches if your GPU has headroom. If you hit an out-of-memory error, drop it to 2 or even 1. The source treats a value of 0 as "process everything in one batch," but you should just set an explicit number. A strong GPU can run 8; a mid card is happier at 4.

The grain itself is generated per-frame from random noise, so it's dynamic - consecutive frames get different noise, which is exactly what you want. Static grain that doesn't shimmer between frames looks like a dirty lens, not film.

What you feed it

  • images - your frame tensor (IMAGE), straight off a VHS Load Video or a KSampler output.
  • grain_intensity - 0.001 to 1.0, default 0.04.
  • saturation_mix - 0 to 1, default 0.5.
  • batch_size - 0 to 500, default 4. Your OOM dial.

Output is a single IMAGE tensor of the same shape, so you can chain it with the rest of the enhancement pipeline (sharpen, color match) before encoding. It's CPU-side and fast - no model downloads, no weights, nothing to fetch.

Install

The whole pack installs the same way:

cd ComfyUI/custom_nodes
git clone https://github.com/vrgamegirl19/comfyui-vrgamedevgirl

Or search vrgamedev in ComfyUI Manager, install, restart. This specific node only needs torch, which you already have.

Troubleshooting

  • OOM on long videos: that's the batch_size dial, lower it.
  • Grain looks wrong (too digital): drop grain_intensity to 0.02โ€“0.03 and keep saturation_mix around 0.3 or below.
  • No visible grain: remember grain is most visible in shadows and gradients; if your footage is bright and busy, you may need to nudge intensity up.

One note from the author's own docs: this is designed to be "video-safe and very fast" - meaning it's deterministic enough not to introduce temporal flicker and cheap enough to run on every frame. That's the honest pitch: it's the grain node you reach for when you want the look without paying the render-time tax.

Categoryvideo/enhancement

Inputs (4)

NameTypeDefaultDescription
imagesIMAGEโ€”
grain_intensityFLOAT0.0400.001โ€“1โ€”
saturation_mixFLOAT0.500โ€“1โ€”
batch_sizeINT40โ€“500โ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”