WAS Apply LUT
Color grading inside the graph instead of round-tripping to Resolve
- image
- lut
- image
AI images tend to come out oversaturated and high-contrast - it's a known pattern, and the usual fix is pulling saturation down and adding a subtle color cast in post. A LUT (lookup table - the same .cube file format DaVinci Resolve, Premiere, and every color grading tool uses) is a compact, reusable way to bake that correction, or any other grade, into a single applyable node instead of hand-tuning saturation and curves every time. This node is the "apply" half of this pack's small LUT pipeline.
How it works
It's a straightforward lookup-table application: for each pixel, remap its color through the LUT, then mix that result back over the original at strength. On its own this node can't do anything - it needs an actual LUT object as input, which only comes from this pack's other LUT nodes (WAS Load LUT, for loading a .cube file or a preset, and WAS LUT Blender, for combining two LUTs into one). If you've only installed this node and are looking for where to plug an image in expecting a color-picker, that's not how this works - you build or load the LUT first, then apply it here.
use_threads and threads are a CPU-side speed option for batches - processing frames in parallel rather than one at a time. Leave it off for a single image; it only matters when you're running this over a large batch or a video sequence and it's noticeably slow.
The inputs and outputs that matter
image(IMAGE) - the image or batch to grade.lut(LUT) - the lookup table to apply. This has to come from an upstream WAS LUT node; it's a custom type, not something you can construct with a color picker on this node itself.strength(default 1, range 0–1) - mix between the original and the LUT-applied result. 1.0 is the full grade; lower values ease it in.use_threads(default false) /threads(default 0, meaning auto) - parallelize across CPU threads for batch/video workloads.
Single output: image.
How to install it
Via ComfyUI Manager: search "WAS_Extras", install, restart. Manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/WAS_Extras
Restart ComfyUI. No extra dependencies for LUT application itself.
Common issues & troubleshooting
Nothing happens, or the output looks identical to the input. First check strength - it's easy to have it dialed down to near-zero while testing and forget. If strength is fine, confirm you actually have a working lut input wired from a WAS Load LUT node upstream; without one there's nothing for this node to apply.
Colors look wildly off after applying a .cube file you found online. LUTs are baked to a specific expected input - the color space and tonal range the grade was designed around. A LUT built for a log-encoded or differently-graded source can look badly wrong applied straight to a raw generated image. If a downloaded LUT looks broken rather than just "a strong look," suspect a color-space mismatch before assuming the node is broken.
You want to blend two different grades into one look. That's not this node's job - combine LUTs with WAS LUT Blender first, then apply the single combined result here, rather than chaining two Apply LUT nodes back to back (which applies them sequentially, not blended).
Slow on a large batch or video. Turn on use_threads; leave threads at 0 to let it pick automatically unless you have a specific reason to cap it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | Images to apply the LUT to (NHWC). | |
| lut | LUT | Lookup table to apply. | |
| strength | FLOAT | 1.000–1 | Mix between original and LUT-applied result. |
| use_threads | BOOLEAN | false | Process frames in parallel using CPU threads. |
| threads | INT | 00–64 | Override number of worker threads (0=auto). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |