Film Stock (Color)
111 real film stocks, from Capture One curves — not a vibe
- image
- image
Most "Kodak Portra" presets are a color grade with a sticker slapped on it. This node is the reason ComfyUI-Darkroom got attention in the first place: when the author launched the pack, the thing people couldn't stop praising was that the film stocks here come from real data - 586 Capture One .costyle curve files parsed into per-channel H&D characteristic curves, not eyeballed settings. Film Stock (Color) is the heart of that.
It ships 111 color stocks - Portra 400, Ektar, Velvia, Cinestill, Polaroid, aged and expired Kodak looks, cinema stocks like Vision3 - each with its own curve shape. A film's character isn't one number; it's how the shadows compress, where the highlights roll off, and how midtone contrast sits, per channel. That's what this node emulates, and it's the difference between "looks filmic" and "looks like this film."
How it works
Darkroom does all its processing in linear light - sRGB gamma removed first, reapplied after - and applies the stock's H&D curve (density vs. log-exposure) to each color channel. The three curve parameters are the classic toe (shadow compression), shoulder (highlight rolloff), and gamma (midtone contrast). Because each stock bundles its own triple, switching from Portra to Velvia changes the whole tonal character, not just a tint. Like every Darkroom node it has a strength blend, so you can ease any stock in from 0 to 100%.
The inputs that matter
- film_stock - the dropdown with 111 choices, grouped (
Neg /,Cinema /,Aged /, etc.). Default is "Neg / Kodak Portra 400", which is a fine starting point. - strength - blend between original (0) and full emulation (1). The one knob you'll touch constantly.
- override_toe / override_shoulder / override_gamma - the power-user knobs. Set to
-1to use the stock's own value; otherwise they replace it. Great when you love a stock's color but want less crushed shadows.
Output is image, wired to Preview or Save like any other node.
Install and where it fits
cd ComfyUI/custom_nodes
git clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom
pip install -r ComfyUI-Darkroom/requirements.txt
Or search "Darkroom" in ComfyUI Manager and restart. Node lives under AKURATE/Darkroom/Film. No models to download, no API key - everything is local math.
Where this earns its keep: it's a per-pixel color transform, which means it's one of the allowed nodes inside a LUT bake chain. Put Film Stock inside a chain between LUT Bake Inject and Extract, and you can export your Portra look as a .cube that works in DaVinci or Premiere. For a photorealistic image, a stock at strength ~0.5–0.8 is usually the sweet spot - full strength nails the look but can fight a bright scene's highlights. And no, an sRGB render can't carry a real spectrum, so treat these as faithful tonal/color emulations, not a claim that you shot it on Portra.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| film_stock | COMBO | Neg / Kodak Portra 400 | Select a film stock to emulate |
| strength | FLOAT | 1.000–1 | Blend between original (0) and full effect (1) |
| override_toeopt | FLOAT | -1.0-1–5 | Override shadow compression. -1 = use preset value |
| override_shoulderopt | FLOAT | -1.0-1–5 | Override highlight rolloff. -1 = use preset value |
| override_gammaopt | FLOAT | -1.00-1–3 | Override midtone contrast. -1 = use preset value |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |