Atlas Export ACEScg Plate π€
Get a real ACEScg EXR out of ComfyUI β the file-based color handoff
- plate_ref
- project
- exr_path
- plate_ref
- report
AtlasExportPlateEXR solves a problem most ComfyUI users don't know they have: you cannot save a real scene-linear ACEScg EXR from the tensor path. ComfyUI's IMAGE tensors are display-referred and effectively 8-bit, so "save an EXR" through the normal tensor route gives you an sRGB-encoded file wearing a float costume - hand that to a Nuke comp and every blend and merge blows out, because gamma-encoded values got treated as linear light. This node never touches the tensor. It takes a file reference, converts it float-to-float through OpenColorIO, and writes a properly tagged ACEScg EXR that a DCC reads back correctly with zero out-of-band knowledge.
If you've ever fed AI output into a color-managed VFX pipeline and gotten weird, washed-out results, this is the node that fixes the root cause instead of the symptom. It's the file-based handoff the atlas-camera colour doctrine is built around.
How it works
You feed it a plate_ref - typically the scene-linear sidecar from AtlasLoadRAW, which is deliberately tagged Linear Rec.709 (sRGB) at the demosaic rather than falsely marked ACEScg. The node reads the file, converts it through OCIO (unpremultiply β convert β re-premultiply), and writes a new EXR tagged oiio:ColorSpace with the target space. The returned plate_ref now points at the converted file, so wiring it into the plate-attach node makes every DCC export reference the ACEScg plate.
output_colorspace defaults to ACEScg but accepts anything the built-in ACES config knows - ACEScct, ACES2065-1, and so on. bit_depth is half by default (the VFX plate standard, 16-bit float) or float for 32-bit.
The inputs
plate_ref is required. Then output_colorspace, output_dir, bit_depth, file_name, and project. Outputs: exr_path, the converted plate_ref, and a report.
Install and gotchas
This one has a real dependency: it needs the [oiio] extra (OpenImageIO-backed). From a clone:
cd <ComfyUI>/custom_nodes/atlas-camera
<ComfyUI-python> -m pip install -e ".[oiio]"
Then restart ComfyUI. It's the pack's own colour path using OpenImageIO's built-in ACES config - no $OCIO environment to configure, no third-party colour pack.
Gotchas worth knowing: a proxy or missing plate reference degrades soft (the report says so, the input ref passes through) because an export chain must never die on a preview-only plate. And if you wire a browser-preview-only ref in, it skips with a clear message - the node needs an actual on-disk file, which is the entire point. Also note this is a file-to-file converter, not a tensor node: the input is an ATLAS_PLATE_REF, not an IMAGE. Get the workflow right and you'll never hand an sRGB-in-EXR-disguise to a comp again.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| plate_ref | ATLAS_PLATE_REF | β | |
| output_colorspaceopt | STRING | ACEScg | OCIO colourspace for the written EXR (built-in ACES config: ACEScg, ACEScct, ACES2065-1, ...). The file is tagged oiio:ColorSpace with this value so a DCC reads it back correctly with no out-of-band knowledge. |
| output_diropt | STRING | atlas_exports/acescg_plates | Directory for the converted EXR (created if missing). |
| bit_depthopt | COMBO | half | half = 16-bit float (the VFX plate default), float = 32-bit. |
| file_nameopt | STRING | Output file name. Blank = source stem + '_acescg.exr' (or the lowercased target space when it isn't ACEScg). | |
| projectopt | ATLAS_PROJECT | Optional delivery project from AtlasProject β routes this export into the project tree's plates/ lane and supersedes output_dir. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| exr_path | STRING | β |
| plate_ref | ATLAS_PLATE_REF | β |
| report | STRING | β |