Nodes/radiance/◎ Radiance Save EXR
ComfyUI Node

◎ Radiance Save EXR

Save real 32-bit EXR from ComfyUI — the format your VFX pipeline actually wants

By fxtdstudios·Created 7 months ago·Updated 9 days ago· 242
◎ Radiance Save EXR
  • image
    filename_prefixRadiance
    bit_depth32-bit Float
    compressionZIP
    output_path

    A PNG can't hold a highlight above 1.0, can't hold a value below black, and will band the moment a sky gradient matters. OpenEXR can hold all of it - that's why it's the currency of film and VFX pipelines. ◎ Radiance Save EXR writes real EXR files straight out of ComfyUI, with control over bit depth and compression. If you're delivering into Nuke, Resolve, or any compositor that expects EXR sequences, this is the node that makes ComfyUI stop being the toy in the pipeline.

    The whole Radiance suite is built around the 32-bit float story - the README's headline claim is "Zero banding. Zero data loss." - and this is the output node where that claim has to cash out. But there's a catch the community has been honest about, and you should hear it before you get excited (more below).

    How it works

    It delegates to the pack's unified write pipeline (RadianceWrite), writing a single EXR file per call in the linear sRGB space (the physically-correct place to store HDR before any display transform). You choose the bit depth - 16-bit Half Float (half the size, plenty for most VFX material, values cap at ~65504) or 32-bit Float (full IEEE 754 range, ~2× the size, use it when your shot has direct-sun or fire values). Then the compression codec, from the standard OpenEXR menu: ZIP and ZIPS (lossless, the safe defaults), PIZ (lossless, great for gradients, the EXR-veteran favorite), RLE, PXR24, the lossy B44/B44A and DWAA/DWAB (wavelet, for video). The output_path is optional; empty means ComfyUI's output folder.

    It also gets the pack's smart-overwrite protection: the write path auto-detects an available index so it won't silently clobber an existing file, and it reports the saved path back to ComfyUI's history so API-driven workflows can discover their outputs.

    The inputs that matter

    • image - the tensor to save.
    • bit_depth - 16-bit Half Float vs 32-bit Float. Start 16-bit; go 32-bit when the shot demands it.
    • compression - ZIP or PIZ for lossless delivery. Pick DWAA/DWAB if you're writing image sequences and size matters more than perfect fidelity.
    • filename_prefix - base name; the pack appends counters.
    • output_path - optional absolute directory.

    No outputs - it's an output node; its "result" is the file on disk.

    How to install it

    It's part of the radiance pack, which carries heavier dependencies than most. ComfyUI Manager → "Radiance", or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/fxtdstudios/radiance.git
    cd radiance
    pip install -r requirements_windows.txt   # or requirements_linux.txt / requirements_mac_silicon.txt
    

    On Linux, install the system libopenexr-dev package before the pip requirements, or the Python OpenEXR wheels may fail to build. The pack sets OPENCV_IO_ENABLE_OPENEXR=1 at import, so EXR support turns on with the package install.

    Common issues

    Here's the honest part. This node writes true 32-bit files, but it cannot manufacture 32-bit data from an 8-bit source. The README says it straight: "It cannot recover highlight or shadow detail that was already clipped in an 8-bit source image. For true HDR workflows, start from EXR/HDR, scene-linear, or float outputs where possible." Community skeptics made the same point when the pack surfaced - a 32-bit EXR of an 8-bit PNG is a bigger file that still has 8-bit's information. So: if you want the full float pipeline, keep it float from the encode side (Radiance VAE Decode's hdr_output mode, or float sources) and this save node is where it lands intact.

    Second: if your save fails with an OpenEXR import error, the Python EXR packages (OpenEXR, Imath) aren't installed - on Linux that usually traces back to skipping libopenexr-dev. Fix that, reinstall requirements, restart.

    CategoryFXTD Studios/Radiance/IO

    Inputs (5)

    NameTypeDefaultDescription
    imageIMAGE
    filename_prefixSTRINGRadiance
    bit_depthCOMBO32-bit Float2 options: 16-bit Half Float, 32-bit Float
    compressionCOMBOZIP10 options: ZIP, ZIPS, PIZ, RLE, None, PXR24, +4
    output_pathoptSTRING

    Outputs (0)

    No outputs