LC Film Stock (Color)
Portra, Velvia and Cinestill from one dropdown
- image
- image
Ask anyone what makes a photo "look like film" and they'll gesture vaguely at colors. LC Film Stock (Color) (LCFilmStockColor) is that gesture, made concrete: it takes eight real color films - Portra 400, Gold 200, Superia, Cinestill 800T, Velvia, Ektachrome, Provia, Portra 160 - and applies each one's characteristic tone curve, saturation, and split-tone to your image. It's a deterministic post node, no model, no data files, just preset math in the source.
The gulf between "desaturated with a warm tint" and this is the difference between pretending and doing the job properly.
How it works
Every stock is a small recipe, applied in linear light (the node converts to linear, grades, converts back):
- Toe / shoulder / slope - a characteristic curve per channel. This is the heart of the film look: negative films crush and lift differently than slide films. Slide stocks (Velvia, Ektachrome, Provia) have punchy contrast and saturated color; negatives (Portra, Gold, Superia, Cinestill) have softer, more forgiving curves.
- Saturation - the stock's inherent color strength.
- Split tone - the stock's signature color cast in shadows and highlights. That's where "teal shadows, warm highlights" style looks actually come from, and it's baked per-stock here.
The dropdown is split by negative vs slide - e.g. "Neg / Kodak Portra 400" vs "Slide / Fuji Velvia 50" - which is a genuinely useful editorial distinction for beginners who don't know the difference yet.
The controls
- film_stock - the pick.
- strength - blend with the original, default 0.8 (so it's never a hard bake).
- override_toe / override_shoulder / override_gamma (optional) - each defaults to −1, which means "use the stock's preset." Set them to anything ≥ 0 and you're hand-curving on top of the stock. This is the escape hatch when a stock is almost right but you want the shadows flatter.
Why you'd reach for it
For the "analog" finish on renders, paired with LC Film Grain on top - stock for tone, grain for texture - this is a one-stop answer that would otherwise be a stack of curve and color nodes you'd have to tune blind. It's the same reasoning the KB gives for the whole post-processing layer: a deterministic, millisecond operation beats re-rolling a generation because "the colors were off."
Install
Part of ComfyUI_LC123_nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes
or via ComfyUI Manager, then restart. Pure torch/numpy - no dependencies, no models to download.
Honest caveat: these are tasteful interpretations of film stocks, not measured emulations - a real scan of Velvia would do things no preset curve can. But within the "make it look shot on film" brief, it's a serious tool. The pack is a quiet niche collection with essentially no Reddit footprint, so the preset tables in lc_image_tools.py are your only spec, and they read clearly.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| film_stock | COMBO | Slide / Kodak Ektachrome E100 | 8 options: Neg / Kodak Portra 400, Neg / Kodak Portra 160, Neg / Kodak Gold 200, Neg / Fuji Superia 400, Neg / Cinestill 800T, Slide / Fuji Velvia 50, +2 |
| strength | FLOAT | 0.800–1 | — |
| override_toeopt | FLOAT | -1.0-1–5 | — |
| override_shoulderopt | FLOAT | -1.0-1–5 | — |
| override_gammaopt | FLOAT | -1.00-1–3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |