Nodes/ComfyUI-Darkroom/Spectral Film Stock
ComfyUI Node

Spectral Film Stock

Film stock as physics, not as a color grade with a stock name

By jeremieLouvaert·Created 5 months ago·Updated 2 days ago· 101
Spectral Film Stock
  • image
  • image
presetC41 Still / Kodak Ektar 100 -> Kodak Endura Premier Paper
strength1.00

Here's the author's own complaint, and it's a fair one: most ComfyUI film nodes are a vibe - a color grade with a stock name slapped on it. That's been the film-emulation trap in the AI image world since 2023: call a LUT "Portra" and nobody checks whether it actually behaves like Portra. Spectral Film Stock is the pack's answer - a set of 35 presets that simulate the full physics of a negative being shot and printed, not a lookup table with a famous name attached.

How it works

Each preset encodes the entire light path from scene to print:

scene light → spectral sensitivity → log exposure → H&D density → dye spectral density → printer light → print density → sRGB

That's the real chain. Light of a given spectrum hits the film's spectral sensitivity curves (how each layer of the emulsion responds to each wavelength), exposes it logarithmically, and the resulting densities map through the dye spectra of the actual film stock. Then it's printed - through the printer-light corrections onto a specific paper - and rendered to sRGB.

The presets cover the full film world:

  • C41 still negative - Kodak Portra 160/400/800, Ektar 100, Gold 200, Ultramax, Fuji Pro 160C/160S/400H, Superia Reala and X-Tra 400, Natura 1600, Vericolor III - each paired with real print papers (Endura, Supra, Portra Endura, Crystal Archive variants).
  • Cinema - Vision3 50D/200T/250D/500T printed onto 2383 and 2393 print stock. That's the actual Kodak negative-to-print film chain.
  • Reversal slides - Velvia 50, Provia 100F, Ektachrome 100D, Kodachrome 64, on their respective papers.
  • Instant - FP-100C and Instax Color on Fujiflex.
  • Niche & B&W - Aerocolor, Agfa Vista 100, Tri-X 400 and Kodak 5222.

The LUTs are pre-baked .cube files shipped in the pack (35 of them, vendored from the MIT-licensed JanLohse/spectral_film_lut engine). You never run the baker - that only matters if you want to regenerate or extend the set, which needs colour-science and numba and a ~13-second bake run.

Using it

Two real inputs, same as most Darkroom nodes:

  • image - your photo.
  • preset - pick a stock (35 choices, named like "Kodak Portra 400 -> Kodak Endura Premier Paper").
  • strength - the blend back to the original, 0–1. This is the slider you'll actually live on: full strength is a strong character pass, and 0.5–0.7 reads more like real film shot on a clear day.

Output is a single image. It's a per-pixel LUT application, so it's one of the nodes the README allows inside a LUT bake chain - and in fact the whole Spectral Film Stock system is designed to compose: pick your stock, then layer Log Wheels or a Tone Curve on top.

How it differs from Film Stock (Color)

The pack has both, and they're genuinely different tools. Film Stock (Color) is the curve-based emulation - per-channel H&D characteristic curves parsed from real Capture One data, 111 stocks, with instant slider feedback. Spectral Film Stock is the heavy-physics one - the full spectral simulation baked into LUTs. For "what would this negative look like printed," Spectral is the more grounded answer; for "give me the Portra character fast and let me tweak it," Film Stock (Color) is more flexible. Both are worth installing since they ship together.

Installing it

Part of the full ComfyUI-Darkroom pack:

cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom.git
pip install -r ComfyUI-Darkroom/requirements.txt

Or search "Darkroom" in ComfyUI Manager. Needs scipy, opensimplex, rawpy, exifread, Pillow - the LUTs ship in the repo, so no extra download. Restart and it's under AKURATE/Darkroom/Film. No GPU, no API. If you want to add your own neg×print combos, the bake tooling lives at tools/bake_spectral_luts.py.

CategoryAKURATE/Darkroom/Film

Inputs (3)

NameTypeDefaultDescription
imageIMAGE
presetCOMBOC41 Still / Kodak Ektar 100 -> Kodak Endura Premier PaperNegative film x print paper spectral simulation
strengthoptFLOAT1.000–1Blend between original (0) and spectral look (1)

Outputs (1)

NameTypeDescription
imageIMAGE