Karma Film Emulation
Karma Film Emulation
- image
- image
You know the look - Kodak Portra's warm pastel skin tones, Fuji Velvia's electric greens, CineStill 800T's halation on every light in a night scene. Chasing those in prompts is unreliable; chasing them with a stack of color nodes is work. Karma Film Emulation is the "I just want it to look like film" button: pick one of ten presets, set an intensity, get the look. It's the closest thing this pack has to a LUT preset collection, and it's the node people actually reach for when they want a cinematic result without grading by hand.
Under the hood each preset is a hand-tuned bundle of color science - white balance shift, green/magenta tint, contrast, saturation, shadow and highlight tinting, gamma, black-point lift, grain amount and size, and halation. So Portra 400 isn't just "a bit warmer," it's a specific set of numbers for warm highlights with a touch of shadow teal and fine grain; Velvia 50 is contrast and saturation pushed hard with cool shadows. Applying one preset is basically running the pack's own Tone Curves, Kolors, Lens FX and Film Grain nodes in sequence using that film's settings, which is why the results hang together better than a random stack of sliders.
Four inputs do the work: film_stock (the dropdown), intensity, grain_override, and seed. intensity blends between your original and the full emulation - 0 is untouched, 1 is full preset, and you can push past 1.0 (up to 1.5) to exaggerate the character. grain_override is the one that trips people up: at -1 it uses each film's default grain, at 0 it gives you the film's color with no grain at all, and positive values set a custom grain strength. If you want Portra color on a clean digital image, set grain_override to 0 - that's a legitimately useful mode people miss. seed just controls the grain pattern so you can keep it consistent across a set.
Which stock you reach for depends on the subject: Portra 400 for portraits, Velvia 50 for landscapes, CineStill 800T for neon and night shots (its halation blooms on bright light sources - the README explicitly says it works best when your image has them), and Kodak Tri-X 400 or Ilford HP5 Plus if you want black & white - those two convert the image to monochrome with proper B&W grain baked in.
Installing it
Search "KarmaNodes" in ComfyUI Manager, or:
cd ComfyUI/custom_nodes
git clone https://github.com/KarmaSwint/ComfyUI-KarmaNodes
cd ComfyUI-KarmaNodes
pip install -r requirements.txt
Restart ComfyUI. No models to download - the presets live in the Python code itself.
Getting a good look
The README's advice holds up: keep intensity at 0.7–0.9 for a believable emulation, because full intensity on an already-colorful render can overshoot into "obviously a filter" territory. That's the one real trap here - the presets are strong, so the node's quality ceiling is your restraint, not its math. For the fastest cinematic pass on an image you like, set CineStill 800T at intensity ~0.85 with grain on default and let it be. It's not a replacement for a deliberate grade when you're doing paid work, but for "make this look like film" it's a genuine one-click solution.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Input image to apply film emulation to | |
| film_stock | COMBO | Kodak Portra 400 | Film stock to emulate |
| intensity | FLOAT | 1.000–1.5 | Blend intensity (0 = original, 1 = full emulation, >1 = exaggerated) |
| grain_override | FLOAT | -1.00-1–1 | Override grain amount (-1 = use film default, 0-1 = custom strength) |
| seed | INT | 00–2147483647 | Random seed for reproducible grain patterns |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |