Nodes/ComfyUI ACES EXR Toolkit/ACES Color Transform
ComfyUI Node

ACES Color Transform

Speak OCIO without leaving ComfyUI

By azhagurajpandians·Created 4 months ago·Updated about a month ago· 0
ACES Color Transform
  • image
  • IMAGE
engineACES Studio 1.3 OCIO
ocio_configocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1
source
target
reversefalse
clamp_output

ACES Color Transform is the pack's color-management workhorse: it converts an image between color spaces using the real ACES Studio 1.3 OpenColorIO config. If you've ever loaded an ACEScg EXR into ComfyUI and stared at a washed-out image, this is the node that makes it right - decode from ACEScg to sRGB and suddenly your render looks like a render, not a fog bank.

This is the "VFX handoff" corner of the toolkit. A ComfyUI image is a roughly-sRGB, 0–1 tensor; a VFX pipeline works in scene-linear float under an OCIO config, usually ACES. The gap between the two is exactly what this node closes: it decodes AI output into linear light and carries it as float (see the KB's post-processing notes on the color-managed handoff) or re-encodes a render back into the space a comp expects. This is niche - most people making finished images will never need it, and the sRGB path is correct for them. You need it the moment AI output has to sit in a color-managed shot next to real footage.

How it works

The default engine is ACES Studio 1.3 OCIO, which processes pixels in bulk through PyOpenColorIO - fast, and it unlocks all twelve source/target spaces, including the camera log spaces (ARRI LogC3/LogC4, Sony S-Log3, RED Log3G10). The ocio_config field defaults to the built-in config URI ocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1; point it at a local .ocio file or set the OCIO env var and it'll use that instead.

The alternate engine, Built-in matrices, needs no OCIO install at all - it's pure matrix math plus sRGB encode/decode - but it's limited to four spaces: sRGB, Linear sRGB, ACEScg, ACES2065-1. Pick a camera space under this engine and it throws an error, deliberately.

Two controls matter more than the rest:

  • reverse - flips source and target. This is the pack's answer to the round-trip problem: ACES -> sRGB -> ACES. The README's verified workflow is forward ACES2065-1 -> sRGB, backward source: ACES2065-1, target: sRGB, reverse: true.
  • clamp_output - clips to 0–1 when true. The README is emphatic: set it false on intermediate nodes in a round-trip, because clamping destroys the HDR data the reverse transform needs to reconstruct.

The settings you'll actually set

  • source / target - the two spaces; ACEScg -> sRGB is the classic preview pair
  • reverse - true for the backward leg of a round-trip
  • clamp_output - false on intermediates, true on the final preview output

Install

The OCIO engine needs opencolorio installed into ComfyUI's Python - that's the one dependency people miss:

cd ComfyUI/custom_nodes
git clone https://github.com/azhagurajpandians/ComfyUI-ACES-EXR-Toolkit.git
python -m pip install -r ComfyUI-ACES-EXR-Toolkit/requirements.txt

Restart ComfyUI, and it's under image/ACES + EXR.

Gotchas

Missing opencolorio means the default engine fails at load time with a clear "install the opencolorio pip package" error - that's your cue, not a bug. And if you're on the built-in matrix engine, don't reach for ARRI/Sony/RED spaces; it can't do them by design. The error messages from this node are unusually specific about what it can and can't do, which is rare and welcome.

Categoryimage/ACES + EXR

Inputs (7)

NameTypeDefaultDescription
imageIMAGE
engineCOMBOACES Studio 1.3 OCIO2 options: ACES Studio 1.3 OCIO, Built-in matrices
ocio_configSTRINGocio://studio-config-v1.0.0_aces-v1.3_ocio-v2.1
sourceCOMBO12 options: sRGB, Linear sRGB, ACEScg, ACES2065-1, Utility - sRGB - Texture, Utility - Linear - sRGB, +6
targetCOMBO12 options: sRGB, Linear sRGB, ACEScg, ACES2065-1, Utility - sRGB - Texture, Utility - Linear - sRGB, +6
reverseCOMBOfalse2 options: false, true
clamp_outputCOMBO2 options: false, true

Outputs (1)

NameTypeDescription
IMAGEIMAGE