Atlas Apply LUT (.cube) π
Real .cube grading inside the graph, no OCIO required
- image
- image
- report
Every matte painter has a stash of Resolve or Iridas .cube LUTs they love, and none of them load in ComfyUI without a fight. Atlas Apply LUT (.cube) π is the fix: it applies a real 3D LUT to your image inside the graph, with a native parser - no OpenColorIO, no $OCIO config, no third-party colour pack. Point it at a .cube file and it just works.
What it actually does
The node reads a .cube (both 1D and 3D cubes), applies it with trilinear interpolation, and honors DOMAIN_MIN / DOMAIN_MAX if the file declares them. Other LUT formats aren't supported - the author's guidance is simply to convert to .cube. It also uses the Nuke Vectorfield intensity convention, which is the setting that makes this node quietly professional:
intensity = 0- full bypassintensity = 1- the LUT at full strength- up to
intensity = 2- extrapolates past the LUT, the way a Nuke Vectorfield can
That intensity knob is the one you'll actually reach for. It's how you dial a look back from "full technicolor" to "barely there" without editing the LUT itself.
The inputs
image(required) - the plate or render you're grading.lut_path- the path to the.cubefile. If the file doesn't exist, the image passes through unchanged and the report tells you so rather than crashing. Fails soft, the Atlas way.intensity- the blend amount described above.
Outputs are image (the graded result) and report - and the report is genuinely useful: it tells you the LUT's title, whether it's a 1D or 3D cube, its grid size, and the domain range. That's more metadata than most ComfyUI image nodes ever show you.
Where it fits in the pack
This node pairs with AtlasRegisterPlate, which records a lut_path into the plate reference for the DCC handoff - meaning the LUT identity travels with the plate into Nuke or Resolve. This node is the in-graph half: it actually applies the look for preview and bake. And it belongs to the pack's colour-managed story: plates are tracked in their working colourspace (ACEScg) and float-safe throughout, so a LUT applied here is grading scene-linear content, not a pre-baked 8-bit preview.
Install is the pack's standard clone-and-go. The LUT parser is pure Python - no [oiio] extra needed for this node, no GPU, no model downloads. It's one of the genuinely light utilities in a pack that mostly wants a graphics card. Where people get burned: pointing it at a .lut or .clf and getting a passthrough with a report explaining the format isn't parsed. Convert to .cube first and you're done.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| lut_path | STRING | β | |
| intensityopt | FLOAT | 1.000β2 | β |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | β |
| report | STRING | β |