HDR Video (IC-LoRA) Beta
HDR Video (IC-LoRA) Beta
The HDR IC-LoRA converts standard dynamic range (SDR) video into high dynamic range (HDR) output, producing per-frame EXR files suitable for professional color grading and post-production workflows.
Unlike other IC-LoRA adapters that guide video generation, the HDR IC-LoRA is a post-processing tool. It takes existing video as input and upscales the bit depth to capture significantly more color and luminance information than standard formats.
HDR conversion is available via a ComfyUI workflow or a standalone Python script.
What You’ll Need
Model: HDR IC-LoRA: https://huggingface.co/Lightricks/LTX-2.3-22b-IC-LoRA-HDR
Files Needed
All files are available in our HuggingFace collection: https://huggingface.co/collections/Lightricks/ltx-23
Hardware
- NVIDIA GPU with 32GB+ VRAM (minimum for ComfyUI workflow at HD resolution)
- More VRAM enables higher resolutions and longer clips
Software
- Python 3.11
uvpackage manager
ComfyUI Workflow
Setup
- Install ComfyUI-LTXVideo custom nodes (see ComfyUI installation)
- Download the HDR IC-LoRA checkpoint (
ltx-2.3-22b-ic-lora-hdr-0.9.safetensors) from Lightricks/LTX-2.3-22b-IC-LoRA-HDR - Place in
ComfyUI/models/loras/ - Download the distilled model checkpoint (
ltx-2.3-22b-distilled.safetensors) if you don’t already have it - Get a free LTX API key from console.ltx.video — the workflow uses the Gemma API for text encoding
- Load the HDR workflow in ComfyUI and enter your API key in the LTX API KEY node
Before launching ComfyUI, you must set the following environment variable to enable EXR file saving:
Without this, OpenCV will silently fail to write EXR files.
Example Workflow Steps
- Load your source SDR video
- The HDR IC-LoRA is applied via the LTX IC-LoRA Loader Model Only node
- Text conditioning uses the prompt
"HDR footage"with a negative prompt for quality control - Generation runs with CFG 1,
euler_ancestralsampler, and 8 inference steps - The LTXVHDRDecodePostprocess node decodes the result into both SDR preview and HDR linear outputs
- Save the HDR output as EXR frames
Key Nodes
- LTX IC-LoRA Loader Model Only — Loads the HDR IC-LoRA checkpoint and applies it to the model. Supports latent downscale for the new generation pipeline.
- LTXVHDRDecodePostprocess — Decodes and post-processes the HDR output. Produces two outputs:
tonemapped— SDR preview suitable for standard displayshdr_linear— Full HDR linear data for EXR export
LTXVHDRDecodePostprocess parameters:
The workflow includes the GemmaAPITextEncode node for text encoding via Lightricks’ free API, avoiding the VRAM cost of loading Gemma locally. On 32GB GPUs (e.g. RTX 5090), using the API encoder is required to avoid out-of-memory errors.
Viewing EXR Files
Standard image viewers cannot display HDR EXR files correctly. Use DJV — a free, open-source viewer designed for professional image sequences including EXR.
Performance
Python Script
Setup
Single Video
Batch Processing
Point --input at a directory of .mp4 files. The pipeline loads once and processes all videos sequentially:
A batch shell script (run_hdr_batch.sh) is also provided, which spawns a fresh process per video for better memory isolation.
Output
Each video produces two outputs:
The EXR frames are slinear RGB unbounded. Use --skip-mp4 to produce only EXR frames, or --no-save-exr to produce only the MP4 preview.
Options
| Flag | Default | Description |
| ----------------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- |
| --exr-half | off | Save EXR as float16 — 2.5x smaller files with negligible quality loss |
| --high-quality | off | Doubles internal frame count to reduce motion artifacts, outputs the original number of frames. Recommended for fast-motion videos; not needed for slow-motion content. ~2x slower. |
| --skip-mp4 | off | Only produce EXR frames |
| --no-save-exr | off | Only produce MP4 preview |
| --seed N | 10 | Random seed |
| --max-frames N | 161 | Maximum frames per video. Must satisfy (N-1) % 8 == 0. | |
| --quantization POLICY | fp8-cast | Quantization policy (fp8-cast or fp8-scaled-mm) |
Performance
Pipeline load is approximately 60 seconds (one-time). Per-video inference times on an A100 80GB:
Importing EXR Files into DaVinci Resolve
HDR EXR files require specific project settings in DaVinci Resolve to display correctly.
Configuration Settings
-
In the General Preferences, enable “use 10-bit precision in viewers if available”.
-
Open Project Settings → Color Management and set the following:
Leave all other settings at their defaults. Dolby Vision, HDR10+, and HDR Vivid should remain disabled.