Load LUT
Get a film look without opening a grading app
- lut
A LUT is the honest way to finish a render. It's a table: this colour in, that colour out. No diffusion pass, no seed lottery, no rewritten faces, milliseconds. If you've ever re-generated an image because the colours were slightly off, that was a LUT's job being done by the most expensive tool available.
Load LUT doesn't touch your image at all. It produces the table. Output is a single lut socket, and that's the bit beginners get wrong - an IMAGE input wants an image, and a LUT socket wired into a preview shows you nothing. The table goes into Apply LUT to grade pictures, LUT Blender to mix two looks, or Save LUT (.cube) to keep it.
What it does
This is the pack's extras group, and Load LUT is the entry point to four nodes that hand a grade around as a file. What it hands you is one of three things, chosen by the look menu:
- A file. Any
.cubethe pack can find shows up as aLUT: <name>entry. Search order is the pack's own luts directory first -<ComfyUI user dir>/was-node-suite/luts, or whateverpaths.lutspoints at - then everymodels/LUTfolder under your ComfyUI models roots. That covers people who've collected Resolve LUTs for years and want them inside ComfyUI. - A built-in look. Names like
Cinematic,Teal and Orange,Golden Hour,Day for Night,Cross Process,Cyberpunk,Arcticand a handful more. These aren't shipped as data; they're generated from grading settings in code, so they cost nothing on disk and nothing to install. Custom. A table built on the spot from the widgets below.
The controls that matter
For Custom, the useful ones, in the order you'll probably reach for them:
custom_ev- exposure in stops. +1.0 doubles brightness. The blunt instrument, use it first.custom_contrastandcustom_gamma- contrast is around mid grey; gamma is a power curve that moves the midtones and leaves black and white where they are. Dull render? Nudge gamma up slightly before you touch contrast.custom_saturationandcustom_vibrance- vibrance is the weighted one, lifting muted colours and leaving already-loud ones alone, which is why it's safe on skin. Saturation is a flat multiplier and hits skin first.custom_temperature,custom_tint,custom_red_balance,custom_green_balance,custom_blue_balance- white balance, then per-channel gain. Use the three balances together to match a reference render channel by channel.builtin_size(default 33) - edge length of the cube. 33 is the industry standard and plenty; 65 is eight times the memory for a difference you generally can't see. It's ignored the moment you pick a file, since the file carries its own size.
Install
ComfyUI Manager, search WAS Node Suite v3, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Nothing gets installed, built or downloaded. ComfyUI 0.14.0+ and Python 3.10+. First start writes config.yaml and creates the pack's folders, LUTs included, then subsequent starts are normal speed. If you want to skip the old tutorials telling you to pip install -r requirements.txt - do. That file is empty in v3 by design, and the opencv/insightface version fights those guides were written for are exactly what the rewrite removed.
Where people get burned
Somewhere in the 2024-2025 archive there's a thread of people fighting "Import Failed" after a ComfyUI update. That was v2 pinning packages the rest of the stack had moved past. It doesn't happen in v3, so if you're troubleshooting from an old post, ignore most of it.
Your .cube file doesn't appear in the menu. The list is scanned when ComfyUI builds node definitions, not every time the node runs. Drop the file in and restart ComfyUI (or refresh node definitions) - same for a LUT you just wrote with Save LUT.
Nothing changes when you move the sliders. custom_* widgets are only read when look is Custom. With Cinematic selected, every one of those controls is decoration.
Colours shift more than you wanted. Imported .cube LUTs are usually built for log or camera footage and assume input already in that space. Your render is sRGB, so they hit hard. Blend at partial strength with Apply LUT rather than pushing the table around by hand.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| look | COMBO | Which table to produce. 'Custom' builds one from the controls below and ignores any file; the named looks are built in and need no file; entries starting 'LUT: ' are .cube files found in a models/LUT directory or in the pack's own luts directory. | |
| builtin_size | INT | 3317–65 | Edge length of the cube built for a named look or for 'Custom', in samples. 33 is the industry-standard size and is plenty; 65 is finer and eight times the memory. Ignored when a .cube file is chosen, since the file sets its own size. |
| custom_ev | FLOAT | 0.00-4–4 | Exposure in photographic stops, for the 'Custom' look. +1.0 doubles the brightness, -1.0 halves it, 0.0 changes nothing. |
| custom_contrast | FLOAT | 1.000.1–3 | Contrast for the 'Custom' look, around mid grey. Above 1.0 deepens shadows and brightens highlights, below 1.0 flattens the picture towards grey, 1.0 changes nothing. |
| custom_saturation | FLOAT | 1.000–3 | Colour intensity for the 'Custom' look. 0.0 gives black and white, 1.0 changes nothing, 2.0 doubles the distance of every colour from grey. |
| custom_vibrance | FLOAT | 0.00-1–1 | Colour intensity for the 'Custom' look, weighted towards the muted colours. Positive lifts pale colour without pushing already-strong colour further, which is the gentler way to add life to skin tones; 0.0 changes nothing. |
| custom_gamma | FLOAT | 1.000.1–3 | Midtone brightness for the 'Custom' look, leaving black and white where they are. Above 1.0 opens up shadow detail, below 1.0 deepens it, 1.0 changes nothing. |
| custom_temperature | FLOAT | 0.00-1–1 | Warmth for the 'Custom' look. Positive shifts towards orange, as though shot under tungsten light; negative shifts towards blue, as though shot in shade; 0.0 changes nothing. |
| custom_tint | FLOAT | 0.00-1–1 | Green-magenta balance for the 'Custom' look, the second half of white balance. Positive adds green, negative adds magenta, which is what corrects a fluorescent cast. 0.0 changes nothing. |
| custom_red_balance | FLOAT | 0.00-1–1 | Red channel gain for the 'Custom' look, applied on its own. +0.1 raises red by a tenth, -0.1 lowers it, 0.0 changes nothing. |
| custom_green_balance | FLOAT | 0.00-1–1 | Green channel gain for the 'Custom' look, applied on its own. Use the three balance controls together to match a reference render channel by channel. 0.0 changes nothing. |
| custom_blue_balance | FLOAT | 0.00-1–1 | Blue channel gain for the 'Custom' look, applied on its own. +0.1 raises blue by a tenth, -0.1 lowers it, 0.0 changes nothing. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lut | LUT | The colour lookup table, for Apply LUT, LUT Blender or Save LUT. |