Nodes/ComfyUI-MLUT/MLUT Apply (legacy)
ComfyUI Node

MLUT Apply (legacy)

The legacy node that grades like a game shader (and why the dropdown's empty)

By TrophiHunter·Created 3 months ago·Updated 3 months ago· 0
MLUT Apply (legacy)
  • image
  • depth
  • image
  • lut_name
pack
lut_name
intensity1.00
chroma1.00
luma1.00
interpolation
upsample
ditherfalse
invert_depthtrue
focus_distance0.50
fade_near0.20
fade_far0.20
blend_power_near1.00
blend_power_far1.00

If you just opened this node and the dropdowns read <no packs found> and <none>, stop hunting for a missing model file. Nothing is broken. The pack just ships with zero LUTs actually installed - and this node is legacy anyway.

MLUT Apply is the original node in the ComfyUI-MLUT pack. It applies a ReShade MLUT - a "multi-LUT" color grade lifted from the game-shader world - to your image, and it's kept around so old graphs keep loading. The README is blunt about it: new work should use the pack's LUT Apply node instead. So this article is half "how it works," half "what you actually came here for."

What an MLUT is (the part nobody explains)

A normal 3D LUT is one .cube or .3dl file: a grid that maps every input RGB to an output RGB. An MLUT pack compresses a whole collection of LUTs into one PNG texture atlas plus a .fx shader config that describes the grid layout. That's a ReShade thing - the post-processing injector people use to grade games in real time. This node imports that format wholesale from TheGordinho/MLUT, so the same packs ReShade players pass around work in ComfyUI.

How it grades

The node parses the .fx configs to list packs, then each pack's lut_name dropdown picks a band out of the atlas. It extracts that band into a proper 3D cube and samples it - trilinear, tetrahedral (a bit cleaner at edges), or nearest for a crunchy raw look. Then the intensity / chroma / luma trio blends the looked-up color over the original: intensity is the master mix, chroma how much of the LUT's saturation you keep, luma how much of its brightness curve. It's a faithful port of the original shader's blend math, which is the whole point - the grade should look exactly like it does in ReShade.

The extras are banding fighters. upsample (33/65/129) resamples a coarse cube to more nodes to kill contour banding; dither adds ~1-LSB noise at output to break up 8-bit gradients. Both default off for exact parity - switch them on only when you actually see banding. The optional depth inputs (wire in a DepthAnything/MiDaS map) confine the grade to a depth band via focus_distance and fade_near/fade_far; for a still image you almost never need it.

The inputs that matter

  • pack / lut_name - pick a collection, then a LUT band inside it.
  • intensity - the master blend. 1.0 is the full grade; 0.4 and you get a whisper of it.
  • chroma / luma - fine-tune how much of the LUT's color versus brightness you keep.
  • interpolation - leave on trilinear; it's the default and it's the safe one.

Outputs are the graded image and a lut_name STRING holding the resolved name - handy when you want the applied grade baked into an auto-generated filename.

Installing (and the gotcha)

The pack installs clean: drop it in custom_nodes (or search ComfyUI-MLUT in ComfyUI Manager) and restart. No pip installs - it only uses numpy/torch/Pillow, which already ship with ComfyUI.

cd ComfyUI/custom_nodes
git clone https://github.com/TrophiHunter/ComfyUI-MLUT

Then the part that trips everyone: the pack's Shaders/ and Textures/ folders ship empty. Download the shader and texture folders from TheGordinho/MLUT and drop them into custom_nodes/ComfyUI-MLUT/, then restart again. No shaders = the <no packs found> you're staring at. The catalog is cached, so any time you add or change files, restart to rebuild it.

Troubleshooting

  • <no packs found> - you skipped the TheGordinho/MLUT download above. That's the whole fix.
  • Dropdown didn't update after adding files - restart. Cached catalog.
  • Image comes back unchanged - the node fails gracefully: an unknown pack or a load error just passes the input through. Check the console for [MLUT] messages.
  • You're trying to grade a photo - honestly, use the pack's LUT Apply node with a .cube file instead. The MLUT atlas format is a gaming-community artifact; .cube is where the photography/video LUT world lives, and LUT Apply has a proper file browser.

This node is a compatibility shim that happens to be well-made. Use it if a saved workflow demands it; reach for LUT Apply if you're starting fresh.

Categoryimage/color

Inputs (16)

NameTypeDefaultDescription
imageIMAGE
packCOMBO1 options: <no packs found>
lut_nameCOMBO1 options: <none>
intensityFLOAT1.000–1
chromaFLOAT1.000–1
lumaFLOAT1.000–1
interpolationCOMBO3 options: trilinear, tetrahedral, nearest
upsampleoptCOMBO4 options: off, 33, 65, 129
ditheroptBOOLEANfalse
depthoptIMAGE
invert_depthoptBOOLEANtrue
focus_distanceoptFLOAT0.500–1
fade_nearoptFLOAT0.200–1
fade_faroptFLOAT0.200–1
blend_power_nearoptFLOAT1.000.01–5
blend_power_faroptFLOAT1.000.01–5

Outputs (2)

NameTypeDescription
imageIMAGE
lut_nameSTRING