ACES IO — Look Transform (OCIOLookTransform)
Apply ACES looks — gamut compression and studio looks in one node
- image
- ocio_config
- from_space
- to_space
- image
ACES IO - Look Transform applies an OCIO look - a named, reusable color effect defined inside the config - to an image. It's the Nuke OCIOLookTransform equivalent, and its most immediately useful resident is the ACES 1.3 Reference Gamut Compression, which is the look that keeps saturated HDR colors from turning into glowing, out-of-range mush when they go through a display transform. Think of looks as "grades the config itself ships," ready to be dropped onto ACEScg without you hand-building the math.
Inputs
looks(STRING) - the look name, or a comma/colon-separated list of several. Prefix one with-to apply it inverted,+for forward - e.g.ACES 1.3 Reference Gamut Compression, -SomeInverseLook. The default is already set to the gamut compression look, which is a sensible "make my colors behave" start.from_space/to_space(defaults:ACEScg/ACEScg) - the colorspace the image is converted to before the look, and back to after. Leave both as ACEScg when your image is already in ACEScg; if you're working in another space, setfrom_spaceto what your image actually is and the node handles the roundtrip. Setto_spaceto what you want out.direction- Forward / Inverse.ocio_config- required; the look must exist in the loaded config, so a look name valid under ACES 1.3 may not exist under 2.0.
Output is a single image. The typical placement is right before the display transform: ColorSpace → Look (gamut compression) → Viewer, which is close to the standard ACES recommendation for HDR-ish content.
Install
Part of BISAM20/ComfyUI-ACES-IO: Manager → Install Custom Nodes → ComfyUI-ACES-IO, restart, or git clone https://github.com/BISAM20/ComfyUI-ACES-IO into custom_nodes + pip install -r requirements.txt. Shared with the whole pack: the load-bearing dependency is PyOpenColorIO, installed as the pip package opencolorio (Manager's hook does this for you; the "PyOpenColorIO" name is not on PyPI). ACES 2.0/1.3 configs ship inside OCIO - no model downloads. If you pick ACES 1.2 it auto-downloads a ~130 MB config on first use.
Gotchas
- Look names are config-specific. Type a name that isn't in the loaded config and you get an error listing what's actually available - which is why the Config Info node exists. Check the name against the config's look list if it fails.
- The Viewer has its own looks override. If you already set
looks_overridein the Viewer node for monitoring, and also add a Look node, you can double-apply. Pick one place to do the look. - Gamut compression is not free license to blow out saturation - it reduces out-of-range colors toward the display gamut, but garbage in, less-garbage out.
- Every node in this pack re-runs each queue, so look edits apply on the next run with no cache clearing.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| ocio_config | OCIO_CONFIG | — | |
| looks | STRING | ACES 1.3 Reference Gamut Compression | — |
| from_space | ACES_COLORSPACE | ACEScg | — |
| to_space | ACES_COLORSPACE | ACEScg | — |
| direction | COMBO | Forward | 2 options: Forward, Inverse |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |