Save LUT (.cube)
Grade in ComfyUI, finish in Resolve
- lut
- lut
The pitch for a LUT is that it's portable. Same table, applied in ComfyUI, Resolve, Premiere, ffmpeg, a game engine, a phone app. Load LUT gets you a look from a .cube file; this node goes the other way and writes one. Build a grade you like once - a Custom look dialled in by eye, or two looks mixed in LUT Blender - and it becomes a file you can hand to someone else or use in an edit.
.cube is the format everything reads. That's the whole reason to bother.
How it works
The table comes in on lut (from Load LUT, LUT Blender, or anything else that emits a LUT), gets resampled to the cube size you ask for, and is written to disk. Then - and this is the part that makes it composable - the resampled table comes straight back out of the node. lut is both an input and an output. Chain it mid-graph and what travels downstream is exactly what's in the file, not the finer table you fed in. If your grade matters, that's a real difference: a 65-per-channel table saved at 33 is a slightly different look, and the output stops you from shipping a mismatch.
Files land in the pack's own LUT directory - <ComfyUI user dir>/was-node-suite/luts on a default install, or wherever paths.luts points in config.yaml. That's the same directory Load LUT scans first, so a look you save shows up in the menu later without any copying around.
The four widgets, briefly:
filename- a name, not a path.WarmFilmbecomesWarmFilm.cube;.cubeis appended if you leave it off. Subfolders are allowed, but the name is resolved against the LUT directory and can't step outside it.output_size(default 33, range 17–65 in steps of 2) - cube edge length. 33 is the industry standard and what most grading tools expect; 65 is finer and eight times the file size. Realistically this is a compatibility control, not a quality one.overwrite(default on) - leave it on and the node happily replaces yesterday'sWarmFilm.cube. Turn it off when the file is the deliverable and you'd rather get an error than silently lose a look you spent an hour on.
Install
ComfyUI Manager → search WAS Node Suite v3 → install → restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui.git
Nothing is installed and nothing is downloaded. ComfyUI 0.14.0+, Python 3.10+. First start creates config.yaml and the pack's folders, the LUT directory among them, and takes a second longer than later starts. This node is in the extras feature group, on by default - the one exception being if you've set extras: false to run the standalone WAS Extras pack alongside.
Where people get burned
Nothing appears on disk. The node writes when the graph runs, so queue a prompt. There's nothing to preview - the LUT isn't an image, so a graph that ends here still looks like it did nothing.
The new file isn't in Load LUT's menu. That menu is scanned when ComfyUI builds node definitions. Restart, or refresh node definitions, and it'll be there. Same story for a .cube you dropped in by hand.
FileExistsError with overwrite off. That's the node doing what you asked. Rename, or turn overwrite back on for this run.
The saved file grades differently from the graph it came from. Check output_size against where the LUT was built. If your source table was 65 and you wrote 33, the file is a resample and the pass-through output reflects that. Match them, or keep working from the node's lut output rather than the original.
You can't find the file to drop into Resolve. Default location as above; the path shows up in ComfyUI's log line when the node writes, which is faster than hunting through your user directory.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| lut | LUT | The table to write, from Load LUT or LUT Blender. A table stored as curves is converted to a cube first, since .cube files hold cubes. | |
| filename | STRING | CustomLUT | Name of the file to write, such as 'WarmFilm'. The .cube extension is added when it is missing. This is a name, not a path: it may name a subfolder, but it cannot step outside the luts directory. |
| output_size | INT | 3317–65 | Edge length of the cube written to the file, in samples. 33 is the industry-standard size and is what most grading tools expect; 65 is finer and produces a file eight times the size. |
| overwrite | BOOLEAN | true | Whether an existing file of the same name may be replaced. Turn it off to have the node stop rather than overwrite a look already saved under that name. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| lut | LUT | The table as it was written, resampled to output_size, so the downstream grade matches the file exactly. |