π π £π § LTXVHDR Decode Postprocess
Turn LTX-2.3's HDR IC-LoRA output into real EXR frames
- image
- tonemapped
- hdr_linear
If you're using LTX-2.3's HDR IC-LoRA, this is the node that makes the output usable. The HDR LoRA doesn't hand you finished HDR video - it produces frames in a LogC3-compressed space (the same ARRI log encoding cameras use), which look wrong if you just view them raw. LTXVHDRDecodePostprocess decodes that log space back to real linear HDR values, and optionally writes them out as an EXR sequence you can drop into a grading or compositing pipeline. This is Lightricks' clearest "models as rendering engines" move: the first model-level HDR output from any AI video model, aimed squarely at people with a DaVinci Resolve or Nuke pipeline rather than people making clips for Reels.
The reason HDR matters at all: every AI video model before this was capped at 8-bit SDR, which falls apart the moment you try to actually grade it - highlights clip, shadows crush, and it won't composite cleanly against higher-bit-depth CGI. The point was never more resolution; it was more dynamic range. This node is the last step that gets you there.
How it works
You place it right after your VAE Decode. It takes the decoded image frames (still in LogC3), decompresses them to linear, and applies Reinhard tonemapping to produce a viewable SDR preview. It gives you two outputs so you don't have to choose: the tonemapped preview for eyeballing, and the raw linear HDR tensor for whatever comes next. Turn on EXR writing and it saves the linear frames as a 16- or 32-bit EXR image sequence.
The inputs and outputs that matter
image(IMAGE) - the VAE-decoded HDR-LoRA output. Required.exposure(FLOAT, default 0, range β10 to 10) - exposure adjustment in stops. The main creative knob; nudge it if the tonemapped preview is too hot or too dark.save_exr(BOOLEAN, default false) - flip this on to write the EXR sequence. Off by default because most people preview first, export second.output_dir/filename_prefix- where the EXR frames land and what they're named.half_precision(BOOLEAN, default true) - 16-bit half-float EXR vs full 32-bit. Half is fine and smaller for most grading work.
Two outputs: tonemapped (the SDR preview IMAGE, wire to a preview/save) and hdr_linear (the raw linear HDR IMAGE for downstream use). This is an output node.
How to install it
ComfyUI Manager: Ctrl+M, search LTXVideo, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Lightricks/ComfyUI-LTXVideo
then restart. Ships in Lightricks' official pack. The workflow needs the HDR IC-LoRA (ltx-2.3-22b-ic-lora-hdr) on top of the LTX-2.3 checkpoint, plus the usual heavy stack (32GB+ VRAM, 100GB+ disk).
Common issues & troubleshooting
EXR writing silently doesn't happen. OpenCV won't write EXR unless you enable it before ComfyUI starts. Set OPENCV_IO_ENABLE_OPENEXR=1 in your environment/command line, restart, then run with save_exr on. This trips up almost everyone the first time.
The preview looks flat or blown out. That's tonemapping doing its best to squeeze HDR into SDR - judge the actual hdr_linear output (or the EXR) in a proper viewer, not the preview. The pack recommends DJV for viewing the EXR sequence. Use exposure to bring the preview into a sane range without touching the real HDR data.
You wired it after the wrong thing. It goes directly after VAE Decode, on HDR-LoRA output specifically. Feeding it normal SDR frames just runs a log-decode on data that was never log-encoded, and the result will look off. This node is only meaningful in an HDR IC-LoRA workflow.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | β | |
| exposureopt | FLOAT | 0.0-10β10 | Exposure in stops (EV). 0 = no change, +1 = 2x brighter, -1 = half brightness. |
| save_exropt | BOOLEAN | false | Save raw linear HDR frames as EXR sequence. |
| output_diropt | STRING | output/hdr_exr | Directory for EXR frames (relative to ComfyUI output directory, or absolute path). |
| filename_prefixopt | STRING | frame | β |
| half_precisionopt | BOOLEAN | true | Save EXR as float16 (half). Smaller files, negligible quality loss for most workflows. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| tonemapped | IMAGE | β |
| hdr_linear | IMAGE | β |