Nodes/ComfyUI LC123 Nodes/LC Film Stock (Color)
ComfyUI Node

LC Film Stock (Color)

Portra, Velvia and Cinestill from one dropdown

By lonecatone23·Created 2 months ago·Updated 3 days ago· 18
LC Film Stock (Color)
  • image
  • image
film_stockSlide / Kodak Ektachrome E100
strength0.80
override_toe-1.0
override_shoulder-1.0
override_gamma-1.00

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.

CategoryLC123/image

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
film_stockCOMBOSlide / Kodak Ektachrome E1008 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
strengthFLOAT0.800–1
override_toeoptFLOAT-1.0-1–5
override_shoulderoptFLOAT-1.0-1–5
override_gammaoptFLOAT-1.00-1–3

Outputs (1)

NameTypeDescription
imageIMAGE