◎ Radiance Write
Deliver EXR, ProRes, or H.265 straight out of ComfyUI
- image
- audio
ComfyUI's default save node writes a PNG, and that's the end of the story for a lot of workflows. Radiance Write is the node for when PNG isn't the delivery format - it's the delivery half of the pack's digital cinema I/O, and it can output image sequences (EXR 32-bit, Radiance HDR, PNG 16/8-bit, JPEG), video (MP4 H.264, H.265 10-bit, MOV ProRes 422/4444/4444 XQ, HDR log ProRes, GIF), in a video/sequence/single-image mode with audio attached if you have it. That's "render an EXR plate or a ProRes master out of ComfyUI without a detour through ffmpeg."
The two things that set it apart from a raw ffmpeg wrapper: it has smart overwrite protection (the pack's docs call it automated index detection - it won't silently destroy an existing file, it finds the next available index), and it reports saved files into ComfyUI's history so API users can discover what a job produced from prompt history.
The settings that matter
- write_mode - Video, Sequence, or Single Image. Video = one container; Sequence = an image sequence folder (the VFX handoff format); Single Image = one frame.
- output_format - the big menu: EXR (32-bit), Radiance HDR, PNG 16/8, JPEG, H.264, H.265 10-bit, the ProRes family, GIF. Pick the deliverable, not the fanciest thing.
- fps - 24 default; set it to match your read node so the video doesn't come out in slow motion.
- quality - 0–100, default 10. Counterintuitive scale: for codecs this is a compression-strength scale, so keep it low for quality. Crank it and watch artifacts.
- output_color_space - same 9-space menu as the read node (sRGB, Linear, LogC3/4, S-Log3, ACEScg...). Set this to what the deliverable should be, not what the input was. This is where you convert your linear chain to a broadcast space on the way out.
- broadcast_safe - on by default; clamps values to legal broadcast range so your video doesn't get flagged by a QC. Off if you're delivering to a float pipeline instead of a broadcaster.
Optional extras: audio (attach your AUDIO type from a read node), output_path, start_frame, bit_depth (16-bit half vs 32-bit float for the float containers), compression (ZIP/ZIPS/PIZ/RLE/None/PXR24/B44/B44A/DWAA/DWAB - the standard OpenEXR compression menu; PIZ is the usual default for speed/size, DWAA/DWAB for deep data), alpha_mode, and custom_metadata to burn notes into the file.
Honest notes
The ProRes options need the system ffmpeg/imageio-ffmpeg to do their thing - if a codec errors, that's where to look first. And remember the pack's own caveat from the README: Radiance preserves float values when the upstream data contains them, but it can't invent highlight or shadow detail that was already clipped in an 8-bit source. Garbage in, prettily-wrapped garbage out. Also, this node appears under two registration names (with and without ◎) - same node, don't double-install.
Install
In fxtdstudios/radiance - Manager search "Radiance", or:
cd ComfyUI/custom_nodes
git clone https://github.com/fxtdstudios/radiance.git
cd radiance
pip install -r requirements_linux.txt # or windows/mac_silicon
Restart after; Linux needs libopenexr-dev before pip. OpenEXR and imageio-ffmpeg are the dependencies that actually power the codec paths, and the full install (OpenColorIO, colour-science, transformers) makes first boot slow.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE,VIDEO | — | |
| filename_prefix | STRING | ◎ Radiance | — |
| write_mode | COMBO | Video | 3 options: Video, Sequence, Single Image |
| output_format | COMBO | Video — MP4 (H.265 10-bit) | 13 options: Image Sequence — EXR (32-bit), Image Sequence — Radiance HDR (.hdr), Image Sequence — PNG (16-bit), Image Sequence — PNG (8-bit), Image Sequence — JPEG, Video — MP4 (H.264), +7 |
| fps | FLOAT | 24.00 | — |
| quality | INT | 100–100 | — |
| output_color_space | COMBO | sRGB (Standard) | 9 options: Linear (sRGB), sRGB (Standard), ARRI LogC3, ARRI LogC4, Sony S-Log3, Panasonic V-Log, +3 |
| broadcast_safe | BOOLEAN | true | — |
| audioopt | AUDIO | — | |
| output_pathopt | STRING | — | |
| start_frameopt | INT | 1 | — |
| bit_depthopt | COMBO | 32-bit Float | 2 options: 16-bit Half Float, 32-bit Float |
| compressionopt | COMBO | ZIP | 10 options: ZIP, ZIPS, PIZ, RLE, None, PXR24, +4 |
| alpha_modeopt | COMBO | From Image | 4 options: None, From Image, Solid White, Solid Black |
| custom_metadataopt | STRING | — |
Outputs (0)
No outputs