ComfyUI Node

LUT Stack

Filmic looks on tap, no .cube files required

By criskb·Created 7 months ago·Updated 5 months ago· 0
LUT Stack
  • image
  • mask
  • image
  • mask
  • lut_stack_info
look_a
strength_a0.75
look_b
strength_b0.00
look_c
strength_c0.00
contrast1.00
saturation1.00
fade0.00
mix1.00
mask_feather12.0
invert_maskfalse

Every colorist has a handful of moves they reach for on every job: a touch of teal-orange, a warm fade, a bleach-bypass punch. LUT Stack is the MKRShift node that puts six of those classic looks behind three dropdowns - look_a, look_b, look_c, each with its own strength - so you can stack them like a grading session in one node. The catch-free part is the headline: these looks are procedural, computed in the node, so there are no .cube files to hunt down, no empty dropdowns, no "LUT not found" warnings. It just works out of the box.

It's in MKRShift Nodes/Color/LUT, sibling to x1LUTBlend. Blend is for your own .cube library; Stack is for the instant, always-available looks. Same family, different supply chain.

How it works

Each look_* dropdown has the same six choices - teal_orange, warm_fade, cool_fade, cross_process, bleach_bypass, print_film - plus none. Pick up to three and set their strength_* (0–1). The node applies each look to the image in turn, weighted by its strength, then runs the stack through the finishing trio:

  • contrast (1.0) - the overall tone curve, applied after the looks so you're grading the look, not through it.
  • saturation (1.0) - master color intensity, on top of whatever the looks did.
  • fade (0–0.6) - lifts the blacks toward a washed film fade. Small values (0.05–0.15) are the tasteful zone; 0.4+ is deliberate 90s-video mush.
  • mix (1.0) - the master blend of the entire stack back over the original.

The defaults give you a good starting recipe: look_a teal_orange at 0.75, with B and C off - that single stack is already a usable grade for most images.

The one worth reaching for

If you only remember one thing: teal_orange at 0.6–0.8 with a touch of fade is the fastest "filmic" pass in this pack. It's also the most overused look on the internet, so the honest advice is to use it as a starting point and pull it back - the node's mix exists so you can dial a strong stack down to something original.

Outputs and wiring

image is the graded result, mask reflects the effect (for a before/after or to scope by region), and lut_stack_info reports the resolved looks and strengths. The optional mask input scopes the whole grade.

Installing it

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

then restart, or search MKRShift_Nodes in ComfyUI Manager. No pip requirements, no models, no LUT files - this is pure numpy color math.

The trap is stacking too many looks at full strength: three looks at 1.0 each compound into a hyper-processed mess, because each one assumes it's the only pass. Treat it like a real grade - one hero look plus a light supporting one, and let mix do the moderation. And if the output looks crushed, check contrast first; the looks are already doing tonal work, so a 1.4 contrast on top of teal-orange will murder your shadows.

CategoryMKRShift Nodes/Color/LUT

Inputs (14)

NameTypeDefaultDescription
imageIMAGE
look_aCOMBO7 options: none, teal_orange, warm_fade, cool_fade, cross_process, bleach_bypass, +1
strength_aFLOAT0.750–1
look_bCOMBO7 options: none, teal_orange, warm_fade, cool_fade, cross_process, bleach_bypass, +1
strength_bFLOAT0.000–1
look_cCOMBO7 options: none, teal_orange, warm_fade, cool_fade, cross_process, bleach_bypass, +1
strength_cFLOAT0.000–1
contrastFLOAT1.000.2–2.5
saturationFLOAT1.000–2.5
fadeFLOAT0.000–0.6
mixFLOAT1.000–1
mask_featherFLOAT12.00–256
invert_maskBOOLEANfalse
maskoptMASK

Outputs (3)

NameTypeDescription
imageIMAGE
maskMASK
lut_stack_infoSTRING