ComfyUI Node

CoCo Load EXR

The hub that turns 3D render passes into usable tensors

By Conor-Collins·Created about a year ago·Updated 5 months ago· 105
CoCo Load EXR
    • image
    • alpha
    • cryptomatte
    • layers
    • layer names
    • raw layer info
    • metadata
    image_pathpath/to/image.exr
    normalizefalse

    ComfyUI can't open a multilayer EXR. It just can't - no core loader, no channel awareness, nothing. If you render in Blender, Maya, Octane or anything VFX-adjacent, that's the first wall you hit. CoCo Load EXR is the pack's front door: one file in, seven outputs out, with every layer, alpha channel, cryptomatte pass and chunk of metadata split out for you. It's the node everything else in the pack hangs off.

    How it works

    Everything funnels through OpenImageIO. The node scans the file's subimages and metadata first, then groups the channels into logical layers by their naming suffixes (RGB triplets become one layer, XYZ groups like normals become another, single channels stay single). Alpha gets pulled out as a mask. Anything cryptomatte-flavored - names starting with crypto or containing cryptoasset, cryptomaterial, cryptoobject, cryptoprimvar - is separated into its own dictionary instead of polluting the normal layers. So a typical Blender EXR with beauty, Z, normals and a crypto pass arrives fully decomposed before you've touched a single other node.

    It's also cache-smart: IS_CHANGED hashes the file's path, modification time and size with your normalize setting, so re-running a workflow doesn't re-read a file that hasn't changed. Change the file, and it knows.

    Inputs and outputs

    Only two inputs, which is refreshingly simple:

    • image_path - full path to the EXR. Absolute paths, please.
    • normalize - off by default. Its author's description is "Normalize image values to the 0-1 range," and that's the knob that matters for HDR: scene-linear EXRs hold values well past 1.0, so with normalize off you may get something that looks black or blown until you convert colorspace or remap it. Turn it on for a quick usable view; leave it off if you want the raw linear data.

    The seven outputs:

    • image (IMAGE) - the base RGB composite.
    • alpha (MASK)
    • cryptomatte (CRYPTOMATTE) - for the pack's Cryptomatte Layer node.
    • layers (LAYERS) - every non-crypto layer, for Load EXR Layer by Name.
    • layer names (STRING) - the processed layer names, your lookup table.
    • raw layer info (STRING) - every channel in the file, for debugging odd naming.
    • metadata (STRING) - a JSON dump of everything in the file.

    The three STRING outputs are the pack's answer to "what's actually in this file" - wire them into a text viewer or debug node once and you'll never guess a layer name again.

    Why people actually use it

    The real-world pattern that shows up in the wild: load an EXR ID pass, run it through a mask from color node, and use the result to drive regional prompting or inpainting in a graph - one user ran exactly that (coco_loadexr > mask from color) to steer a FLUX generation per color region. The more common flow, though, is the pack's own: Load EXR → Load EXR Layer by Name to split passes → Colorspace to convert linear→sRGB → Z Normalize on the depth → preview. This node is step one of every one of those chains.

    Installing it

    Part of the CoCoTools pack - Manager ("CoCoTools") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/Conor-Collins/ComfyUI-CoCoTools_IO
    pip install -r ComfyUI-CoCoTools_IO/requirements.txt
    

    Common issues

    • OpenImageIO missing → hard ImportError on load. This is the big one: the pack lists it in requirements, but it has to land in the Python ComfyUI actually runs (portable builds: python_embeded\python.exe -m pip install). README's own pip line references a ComfyUI-CoCoTools folder that doesn't exist - the real one is ComfyUI-CoCoTools_IO.
    • File not found → the node raises a clear FileNotFoundError, but only if you gave it a valid path; a typo just errors at run time, so paste the path.
    • Looks washed out / too dark → that's scene-linear vs sRGB, not a bug. Run it through CoCo Colorspace (LinearsRGB) or flip normalize for a quick look.

    Zero lifetime impressions and barely any clicks - which is a shame, because for anyone who works with real renders this is the load-bearing node of the pack. If you've been hex-editing around ComfyUI's EXR blindness, this is the fix.

    CategoryImage/EXR

    Inputs (2)

    NameTypeDefaultDescription
    image_pathSTRINGpath/to/image.exr
    normalizeBOOLEANfalse

    Outputs (7)

    NameTypeDescription
    imageIMAGE
    alphaMASK
    cryptomatteCRYPTOMATTE
    layersLAYERS
    layer namesSTRING
    raw layer infoSTRING
    metadataSTRING