๐๏ธ Fast Film Grain
Film Grain Without Murdering Your VRAM
- images
- IMAGE
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_sizedial, lower it. - Grain looks wrong (too digital): drop
grain_intensityto 0.02โ0.03 and keepsaturation_mixaround 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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | โ | |
| grain_intensity | FLOAT | 0.0400.001โ1 | โ |
| saturation_mix | FLOAT | 0.500โ1 | โ |
| batch_size | INT | 40โ500 | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |