Nodes/ComfyUI-Darkroom/LUT Identity Generator
ComfyUI Node

LUT Identity Generator

LUT Identity Generator — the blank canvas you need before baking a .cube

By jeremieLouvaert·Created 5 months ago·Updated 2 days ago· 101
LUT Identity Generator
    • identity_lattice
    • lut_size
    lut_size33

    LUT Identity Generator produces the neutral identity lattice that the rest of the Darkroom bake pipeline turns into a .cube file. On its own it looks like nothing - literally, a gray grid image - and that's exactly the point. It's the calibration chart for the LUT bake. You feed it through your grading chain alongside a real photo, and whatever the chain does to every possible color also happens to the photo. One pass, one set of settings, and you get both the graded image and a LUT out the other side.

    If you've ever built a LUT by hand, you know the pain this removes: run the grade on a photo, then re-run it on a synthetic lattice with settings duplicated across two chains, and hope they don't drift. Inject/Extract (the nodes this one pairs with) fixed that - the lattice rides the same chain as your photo, so there's no drift to worry about.

    How it works

    The lattice is a cleverly arranged image: size pixels wide and size × size tall. Red varies across the columns, green across the rows within a blue block, blue across the blocks - R changing fastest, matching .cube file ordering exactly. Every pixel is one unique RGB combination, so size³ color samples total. When your color nodes process it, the grid encodes exactly how that node transforms every possible color, which is precisely what a 3D LUT is.

    The inputs

    Just one:

    • lut_size (enum, 17 / 33 / 65, default 33) - 33 is the standard for DaVinci, Premiere, and Photoshop, and it's what you should use unless you have a reason not to. 17 is lighter and applies faster but gives coarser color interpolation; 65 is maximum precision at a bigger file size. Most grading pipelines can't even push enough to see the difference between 33 and 65.

    The outputs are identity_lattice (IMAGE) - feed it into LUT Bake Inject's identity_lattice input - and lut_size (INT), which you can wire straight through Inject → Extract → LUT Export so the size can never drift out of sync. That wiring is the whole trick: let the number travel down the graph instead of typing it in three places.

    Install & the gotcha

    Standard Darkroom install - Manager, search "Darkroom", or clone https://github.com/jeremieLouvaert/ComfyUI-Darkroom, pip install -r requirements.txt, restart. No GPU, no model files, no API keys; this pack is pure numpy/scipy math.

    The one real trap: the lut_size you pick here must match what LUT Export is set to, or Export throws a dimension error. That's why it's worth the two extra wires to route the INT output through the pipeline rather than retyping it. Set 33 once and never think about it again.

    CategoryAKURATE/Darkroom/Pipeline

    Inputs (1)

    NameTypeDefaultDescription
    lut_sizeCOMBO33LUT resolution — 33 is standard for most tools (DaVinci, Premiere, Photoshop). 17 is lighter, 65 is maximum precision

    Outputs (2)

    NameTypeDescription
    identity_latticeIMAGE
    lut_sizeINT