Nuke OCIO ColorSpace
Move images between color spaces the ACES way
- image
- IMAGE
The moment you start treating ComfyUI like a real compositing pipeline - feeding renders between steps, pulling in camera footage, grading before you composite - "the colors are just a value between 0 and 1" stops being true. Different steps expect the pixels to be in different color spaces, and if you feed linear data into a step expecting sRGB, or hand log footage to a step expecting ACEScg, you get colors that are subtly (or dramatically) wrong. NukeOCIOColorSpace is the node that converts between them, properly, using OpenColorIO - the same standard Nuke itself uses.
Its job is narrower than its sibling NukeOCIODisplay. That node takes scene-referred data to a display. This one transforms between any two color spaces you pick, so it's your general-purpose conversion node: log camera footage into a working space, working space into display space, one camera's IDT to another's.
How it works
Under the hood it's a straight OpenColorIO transform: pick in_colorspace, pick out_colorspace, and the pixels get remapped through the OCIO conversion between them. The pack hardcodes the ACES 2.0 Studio Config - 55 color spaces baked into the dropdowns, covering the ACES working spaces (ACES2065-1, ACEScg, ACEScc, ACEScct) plus camera IDTs from ARRI, Sony, RED, Canon, Blackmagic, Panasonic, Apple, and DJI, and display spaces like sRGB and Rec.709. You don't manage any config files; config is locked to that single entry, which keeps things reliable but also means you can't load your own studio config.
The inputs that matter
image- the image to convert.config- locked to "ACES 2.0 Studio Config". Nothing to choose.in_colorspace- where the image is now. Default ACEScg, which is the common working space.out_colorspace- where you want it. Default "sRGB Encoded Rec.709 (sRGB)" - which is the exact transform most people need when their generated image is actually sitting in sRGB already but the pipeline thinks it's ACEScg.
The classic workflow: your render is in ACEScg (or whatever your upscaling/sampling chain assumed), and before you save or display it you run it through this node to sRGB. And if your input is log footage from a camera, find the camera's IDT in the list and convert to linear or ACEScg before you grade.
Output is a single IMAGE in the destination space.
Installing it
It ships in the Nuke Nodes pack:
cd ComfyUI/custom_nodes
git clone https://github.com/sumitchatterjee13/nuke-nodes-comfyui.git nuke-nodes
cd nuke-nodes
pip install -r requirements.txt
Or search "Nuke Nodes" in ComfyUI Manager and restart. Under the Nuke category. The critical dependency is opencolorio (2.2+, in requirements.txt) - this node does nothing without it.
Common issues
- "OpenColorIO not installed" error -
pip install opencolorio, restart ComfyUI. The classic first failure with the OCIO nodes. - Colors are way off after conversion - you've picked the wrong
in_colorspace. The node can't guess where the image currently lives; you have to know. If in doubt, your generated image is probably sRGB already. - "sRGB Encoded Rec.709" vs "Linear Rec.709" confusion - one is gamma-encoded, one is linear. Converting to the wrong one of the pair is the single most common color mistake in this node.
- A camera space is missing - the list is fixed at 55 from ACES 2.0 Studio. If your camera isn't there (some very new or very niche log spaces), you can't add it without changing the pack.
For anyone feeding real footage or render passes into ComfyUI and out again, this is the node that keeps colors honest between steps.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| in_colorspace | COMBO | ACEScg | Source colourspace. Lists come from the active OCIO config ($OCIO or built-in ACES); changing $OCIO needs a ComfyUI restart. |
| out_colorspace | COMBO | sRGB Encoded Rec.709 (sRGB) | Destination colourspace. Lists come from the active OCIO config ($OCIO or built-in ACES); changing $OCIO needs a ComfyUI restart. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |