Nodes/ComfyUI-OCIO/OCIO ColorSpace
ComfyUI Node

OCIO ColorSpace

Convert between colorspaces like you're in Nuke, not stuck in sRGB

By SlavaSexton·Created 2 months ago·Updated 3 days ago· 99
OCIO ColorSpace
  • image
  • video
  • image/sequence/video
  • ComfyUI Video
in_colorspaceACES2065-1
out_colorspaceACEScg
mix1.00
config_path(built-in ACES config)

Here's the thing about ComfyUI: it has no color management. Every image is a plain gamma-encoded sRGB tensor in 0..1, and that's the ceiling of the whole ecosystem. That's fine for finished pictures and quietly wrong the moment you're handing a plate to a real pipeline - a VFX comp works in scene-linear float with a wide gamut, and gamma-encoded values treated as linear light blow out every blend. OCIO ColorSpace is the node that moves you between those worlds: it's Nuke's OCIOColorSpace rebuilt, converting in_colorspace to out_colorspace through the OpenColorIO engine.

Which colorspaces? The active OCIO config ships with the pack - the built-in ACES studio config, around 55 spaces including ACEScg, ACES2065-1, ACEScct, and the camera set: ARRI LogC3/LogC4, RED Log3G10, Sony S-Log3, Canon Log, Panasonic V-Log, the Rec.2100 PQ/HLG display spaces. It's ACES 2.0, so a couple of names differ from the ACES 1.x you might remember from Nuke: Linear Rec.709 (sRGB) is the old Utility - Linear - sRGB.

The inputs that matter

  • in_colorspace / out_colorspace - dropdowns from the active config, not free text. Pick the space the image is in, then the space you want out.
  • mix (default 1) - blend with the original. 1.0 is the full conversion, 0.0 is a bypass. Useful for easing a conversion in.
  • config_path - defaults to the built-in ACES config; drop your own .ocio in the ComfyUI input folder and it appears in the list.
  • image / video - mutually exclusive. A VIDEO in gives you a VIDEO out, so this slots straight into ComfyUI's native video graph (Load Video → OCIO ColorSpace → Save Video).

Outputs are image/sequence/video and ComfyUI Video, both converted.

When you actually reach for it

Two honest use cases. First, the professional handoff: an EXR plate comes in through OCIO Read as ACEScg, you want it in the working space for a model, then back to ACEScg (or ACES2065-1) for the master - this is the node between. Second, the LTX HDR corner, where it's half of the standard recipe. LTX-2.3's HDR IC-LoRA gives you linear Rec.709 after its own decode; you run this node Linear Rec.709 (sRGB) → ACEScg and the plate lands in a space that can actually hold it. Same story after OCIO LogConvert undoes a log curve - the LogConvert output is linear in the camera's own primaries, and this node finishes the gamut conversion. The swap button on the node face flips in/out in one press.

Accuracy is a published number here, not a claim: the pack's regression suite checks against an independent PyOpenColorIO reference and reports 0.000e+00 max abs error for ColorSpace - bit-identical to what OCIO computes. And nothing clamps: negatives and values above 1.0 survive the conversion, which is the whole point of a scene-linear path.

Install it via ComfyUI Manager (pick Nightly in the version dialog - the numbered registry entries are stale and flagged) or git clone https://github.com/SlavaSexton/ComfyUI-OCIO into custom_nodes plus pip install -r requirements.txt, then restart. One thing that confuses people: the config dropdown only shows the built-in ACES config until you drop a .ocio file into the input folder - there's no file browser for it. And if a conversion comes out looking wrong, check which direction you've got in and out set - that's the overwhelmingly common mistake, not the config.

CategoryOCIO

Inputs (6)

NameTypeDefaultDescription
in_colorspaceCOMBOACES2065-1Colorspace from the active config.
out_colorspaceCOMBOACEScgColorspace from the active config.
mixFLOAT1.000–1Blend with the original: 1.0 = full effect, 0.0 = bypass.
imageoptIMAGE
videooptVIDEO
config_pathoptCOMBO(built-in ACES config)OCIO config: built-in ACES, or a .ocio file dropped in the ComfyUI input folder. Pick from the list.

Outputs (2)

NameTypeDescription
image/sequence/videoIMAGEImage converted from in_colorspace to out_colorspace.
ComfyUI VideoVIDEOSame conversion as a ComfyUI VIDEO (carries data only when a VIDEO is fed in).