Skip to navigation

Working with EXR & HDR

Native HDR brings production EXR material into LTX and returns color-managed HDR output. The goal is to keep color and dynamic range available after generation or editing, so the result can continue through compositing, grading, and finishing instead of being reduced to a display-ready preview.

Use the workflow instructions on this page when your source is an existing scene-linear or ACEScct OpenEXR still or frame sequence. The viewing and color-management sections also apply to EXR output from other documented HDR paths.

If your source is standard-dynamic-range video and you want LTX to synthesize an HDR result, use SDR to HDR. That is a reconstruction workflow with its own models, workflows, and version boundaries.

Native HDR

Native HDR is the HDR-to-HDR path: use it when your source is already EXR/HDR and you want to keep the workflow color-managed through generation and export.

Native EXR is available through the LTX-2.5 Python pipelines. The current LTX-2.5 ComfyUI release workflows add native-HDR image-to-video and inpainting.

Supported color spaces

Declare the color space that matches the pixels in your EXR source.

SourcePython --hdr valueComfyUI color_space valueMeaning
Scene-linear ACEScgACESCGacescgScene-linear ACEScg using AP1 primaries
Scene-linear sRGB / Rec.709SRGB_LINEARsrgb_linearScene-linear RGB using Rec.709/sRGB primaries
ACEScctACESCCTacescctACEScct-encoded values

The ComfyUI loader converts supported sources into an ACEScct working representation for the video VAE. Match the EXR output setting to the color space required by your downstream workflow.

What you get

StageBehavior
Condition loadA single EXR still or naturally sorted folder of EXR frames is loaded in its declared color space.
Working representationSupported EXR input is converted to ACEScct for the LTX video path.
GenerationThe selected LTX-2.5 generation or IC-LoRA editing workflow runs on the HDR source.
VAEVideo VAE encode and decode run in float32 for the native HDR path.
EXR outputRGB EXR frame sequence, optionally float16 or float32, with output color-space tags where supported.
Delivery outputBT.2020/HLG 10-bit HEVC video. Audio is included only when the selected path supplies a track.
PreviewA viewable preview is available separately from the EXR sequence and HLG master.

The ComfyUI loader retains only the first three EXR channels, and the writer creates a new R/G/B EXR. Alpha, additional channels, and source header metadata are not round-tripped.

HDR video files are not accepted as native HDR input

Native HDR input uses an EXR still or a folder of EXR frames. HLG, PQ, HDR10, .mp4, and .mov files are not accepted as color-managed HDR conditioning by the native EXR path.

If your source is an HDR video file, convert it to an OpenEXR frame sequence in one of the supported color spaces:

my_clip_exr/
frame_00000.exr
frame_00001.exr
...

Do not place display-encoded HLG or PQ values into an EXR file and label them as scene-linear.

Inputs

Use caseSurfaceExpected input
HDR image-to-videoComfyUIOne EXR still, declared color space, frame rate, duration, and optional prompt
HDR inpaintingComfyUIEXR frame sequence plus an SDR black-and-white mask video; white is generated and black is retained
HDR image-to-videoPythonSingle .exr supplied through --image, with matching --hdr value
HDR IC-LoRA / video conditioningPythonDirectory of *.exr frames supplied through --video-conditioning, with matching --hdr value
HDR retakePythonDirectory of *.exr frames supplied through --video-path; frame rate is required because an EXR sequence has no container timing metadata

The ComfyUI EXR loader can trim a sequence to its longest valid 8k+1 frame prefix. Confirm the resulting frame count before generation.

Outputs

ArtifactBehavior
EXR framesWritten to the configured output directory and color space. ComfyUI supports float16 or float32 output.
HLG masterBT.2020, HLG (arib-std-b67), 10-bit HEVC. ComfyUI can mux an optional audio track as AAC.
PreviewSeparate preview output for ordinary display; do not treat it as the HDR master.

Use Native HDR in ComfyUI

Prerequisites

  • A current ComfyUI installation with the required ComfyUI-LTXVideo nodes.
  • OpenImageIO support for reading and writing EXR files.
  • The LTX-2.5 distilled transformer, matching text encoder, video and audio VAEs, and latent spatial upscaler used by the selected workflow.
  • The LTX-2.3 In/Outpainting IC-LoRA for the inpainting workflow.

The LTX-2.5 inpainting graph explicitly uses the LTX-2.3 In/Outpainting IC-LoRA as a workflow-specific exception. Do not infer that other LTX-2.3 adapters are compatible with LTX-2.5.

Image-to-video

  1. Load example_workflows/2.5/HDR_workflows/LTX-2.5_I2V_HDR_Two_Stage_Distilled.json.
  2. In Load EXR still, select an EXR plate and set color_space to match its pixels.
  3. Set frame rate and duration for the generated clip.
  4. Enter a prompt if the shot requires one.
  5. Keep the workflow’s native EXR conditioning settings unchanged.
  6. Confirm that the video VAE passes through LTXVVAEForceFloat32 before every HDR encode and decode.
  7. Set the EXR output color space for your downstream pipeline, then run the workflow.

The workflow performs a low-resolution distilled pass, 2× latent spatial upscaling, and a short high-resolution refinement pass. The source still is applied again during stage 2.

Inpainting

  1. Load example_workflows/2.5/HDR_workflows/LTX-2.5_ICLoRA_Inpaint_HDR_Two_Stage_Distilled.json.
  2. Load the source EXR sequence and declare its color space.
  3. Load a black-and-white mask video that matches the source sequence’s frame count and aspect ratio. White regions are generated; black regions are retained.
  4. Provide an optional prompt describing the intended scene content rather than an editing instruction.
  5. Keep the workflow’s EXR conditioning settings unchanged and confirm the float32 VAE path.
  6. Adjust mask and blend dilation if the transition edge requires more coverage.
  7. Set the EXR output color space and run the workflow.

The In/Outpainting IC-LoRA was trained with a specific green value under the generated region. The workflow intentionally retains that training cue even when the surrounding plate uses an ACEScct representation. If green remains at an edge, increase dilation, try another seed, or use a lossless mask source.

Key HDR nodes

NodeWhat it does
LTXVLoadEXRSequenceLoads one EXR still or a folder of frames, declares the source color space, converts the input to ACEScct, returns sequence geometry, and supplies silent audio for graph compatibility.
LTXVVAEForceFloat32Forces the supplied video VAE to float32 for native HDR encode and decode.
LTXVHDRDecodePostprocessConverts VAE-decoded ACEScct or legacy LogC3 output into a tonemapped preview and scene-linear HDR output; it can also write EXR frames.
LTXVSaveHLGConverts scene-linear HDR into a BT.2020/HLG 10-bit HEVC master and optionally muxes audio.

When saving EXR from LTXVHDRDecodePostprocess, set the output color space, output directory, filename prefix, and float16/float32 precision explicitly. The exposure control affects only the tonemapped preview, not the scene-linear output or saved EXR frames.

LTXVVAEForceFloat32 mutates the VAE object supplied to it; it does not create an independent float32 copy. Use one chain from the VAE loader through this node to all HDR encode and decode operations. Do not share the unpatched loader output with a parallel branch.

The decode nodes expose spatial and temporal tiling to manage VAE memory. Fewer, larger tiles are faster but require more VRAM. This decode tiling is not the separate Native Resolution generation workflow.

Use Native HDR in Python

The public ltx-pipelines HDR guide is the authoritative source for current CLI flags, accepted EXR inputs, output behavior, and pipeline constraints. It documents native --hdr operation for LTX-2.5, including EXR stills and sequences, float32 HDR VAE decode, half-float EXR output, and a BT.2020/HLG master.

Image-to-video from an ACEScg HDR plate

python -m ltx_pipelines.ti2vid_two_stages \
--checkpoint-path /path/to/checkpoint.safetensors \
--prompt "your prompt" \
--image /path/to/plate.exr 0 1.0 \
--hdr ACESCG \
--output-path /tmp/out.mp4

This produces /tmp/out.mp4 as an HLG master and /tmp/out_exr/*.exr as ACEScg-tagged frames.

Video conditioning from an EXR sequence

python -m ltx_pipelines.ic_lora \
--distilled-checkpoint-path /path/to/distilled.safetensors \
--video-conditioning /path/to/exr_frames/ 1.0 \
--hdr ACESCG \
--prompt "your prompt" \
--output-path /tmp/out.mp4

Retake on an EXR sequence

python -m ltx_pipelines.retake \
--distilled-checkpoint-path /path/to/distilled.safetensors \
--video-path /path/to/exr_frames/ \
--frame-rate 24 \
--hdr ACESCG \
--start-time 1.0 \
--end-time 2.0 \
--prompt "your prompt" \
--output-path /tmp/out.mp4

Viewing EXR files

Standard image viewers do not display HDR EXR files correctly. Use an OCIO-aware viewer such as DJV or Nuke, and set the input transform to match the EXR’s actual color space.

EXR outputInput interpretation
Scene-linear Rec.709/sRGBLinear Rec.709 or Linear sRGB
Scene-linear ACEScgACEScg
ACEScctACEScct

DJV is a free, open-source viewer designed for professional image sequences, including EXR.

The input transform must match the EXR output setting. Do not use the legacy LTX-2.3 Linear Rec.709 viewing setup for an ACEScct- or ACEScg-tagged LTX-2.5 sequence.

Importing EXR files into DaVinci Resolve

Import the EXR sequence at its native frame rate and assign the input transform that matches the color-space setting used when the frames were written. Do not assign a scene-linear transform to ACEScct-encoded frames or an ACEScct transform to scene-linear frames.

The exact LTX-2.5 Resolve project and output settings depend on the EXR output space and delivery target. Validate the transform chain with representative frames before grading a full sequence.