DPX Read
Read footage like a VFX shot, not a web image
- image
- mask
- shot_metadata
Most ComfyUI users load stills. If you're loading footage - an actual shot, an EXR plate, a log clip from a camera - the stock loaders start to feel wrong fast. Radiance Read is built for the footage workflow: it takes a path and hands you a video or image sequence as a batch of frames, complete with frame count, dimensions, fps, alpha, and audio, so the rest of your graph can treat it like a shot being read into a compositor.
It reads the same things: mp4, mov, gif, webp, avi, mkv, webm video; EXR (pulling depth and alpha channels when present), HDR, and image sequences. Under the hood it's OpenCV's VideoCapture for video and a proper OpenEXR reader for plates, which is why the EXR path actually preserves float values instead of clamping them - that's the node's genuine HDR claim, and unlike some parts of this pack, it's a claim the code backs up.
The settings that will actually bite you
- frame_limit - 0 = load all. This is your RAM guard. A 4K sequence loaded all-at-once is the fastest way to OOM a ComfyUI session. For look work, load 20 frames; expand when you're ready to render.
- input_colorspace - the correct answer here is the difference between "footage looks right" and "footage looks washed out and you don't know why." Pick the actual space of your clip: LogC3/LogC4 for ARRI, S-Log3 for Sony, ACEScg/ACEScct for VFX pipelines. Declare it wrong and every downstream grade fights the gamma.
- fps_override - 0 = auto. The node reads fps from the file header, and
fpscomes out the other side, so wire it into a write node later rather than trusting your memory.
Outputs are the useful set: IMAGE, MASK, frame_count, width, height, fps, audio, and video (a string identifier you can thread into filenames or metadata). The metadata outputs are the whole point of a "cinema" read - they let downstream nodes adapt to the shot instead of you hardcoding 1920×1080@24.
One confusing thing
This node is registered under two names in the pack - RadianceDigitalCinemaRead and ◎ RadianceDigitalCinemaRead - and both display as "◎ Radiance Read." They're the same node, same behavior. If you see both in the menu, that's a packaging quirk, not two things to install. Old workflows may reference either.
Install
It's 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, and the pack's dependency set (OpenEXR, imageio-ffmpeg, OpenColorIO, colour-science, transformers) makes the first boot slow. If Manager's security level refuses the install, clone manually per the README. And if you're coming from an 8-bit PNG habit, remember the read side can't recover detail that was never in the file - HDR in, HDR out; 8-bit in, 8-bit out.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| source_path | STRING | Video file, image, or frame sequence (e.g. shot.####.exr). Required: an empty path stops the graph. | |
| read_mode | COMBO | Auto | How to treat source_path. Auto detects from the path; EXR is handled exactly like Sequence. |
| start_frame | INT | 1 | Sequence: the frame number to start at (a number outside the range on disk falls back to the first frame). Video: the frame to start at counting from 1, so the default 1 is the clip's first frame. |
| frame_limit | INT | 0 | Maximum number of frames to read from start_frame. 0 reads to the end. |
| input_colorspace | COMBO | sRGB (Standard) | Transfer the source was encoded with. It is decoded to scene-linear; shot_metadata.colorspace records the result. |
| fps_override | FLOAT | 0.00 | 0 = the source's own rate. Written to shot_metadata.fps. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |
| shot_metadata | RADIANCE_SHOT | — |