Nodes/radiance/DPX Read
ComfyUI Node

DPX Read

Read footage like a VFX shot, not a web image

By FXTD-Studios·Created 9 months ago·Updated 2 days ago· 249
DPX Read
    • image
    • mask
    • shot_metadata
    ◄source_path►
    ◄read_modeAuto►
    ◄start_frame1►
    ◄frame_limit0►
    ◄input_colorspacesRGB (Standard)►
    ◄fps_override0.00►

    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 fps comes 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.

    CategoryFXTD STUDIOS/Radiance/Load & Save

    Inputs (6)

    NameTypeDefaultDescription
    source_pathSTRINGVideo file, image, or frame sequence (e.g. shot.####.exr). Required: an empty path stops the graph.
    read_modeCOMBOAutoHow to treat source_path. Auto detects from the path; EXR is handled exactly like Sequence.
    start_frameINT1Sequence: 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_limitINT0Maximum number of frames to read from start_frame. 0 reads to the end.
    input_colorspaceCOMBOsRGB (Standard)Transfer the source was encoded with. It is decoded to scene-linear; shot_metadata.colorspace records the result.
    fps_overrideFLOAT0.000 = the source's own rate. Written to shot_metadata.fps.

    Outputs (3)

    NameTypeDescription
    imageIMAGE—
    maskMASK—
    shot_metadataRADIANCE_SHOT—