TS LTX HDR Settings
One switch that turns the whole LTX 2.5 HDR path on — and off for free
- config
- enabled
The native HDR path of LTX 2.5 is a whole graph's worth of nodes, but every one of them reads one master switch - and that switch lives in TS LTX HDR Settings. Turn it off (the default) and the graph behaves exactly as it did before these nodes existed: no EXR is read, no float32 VAE is loaded, nothing HDR happens. Turn it on and the entire path switches mode from one place instead of five settings that all have to agree.
That's the design and it's the right one. A single checkbox changes the mode of the entire graph, and "off" is genuinely free - the lazy inputs elsewhere mean ComfyUI never even walks into the EXR branch.
How it works - the two modes
hdr_mode picks between two HDR technologies, and the README is emphatic that they're genuinely different:
- preserve HDR from EXR (ACEScct) - the native LTX 2.5 path. Range came in from an EXR and the job is not to lose it. Working curve ACEScct, code 1.0 = linear 222.86, output converts AP1 → Rec.709.
- expand HDR from SDR (LogC3 IC-LoRA) - the HDR IC-LoRA. There was no range on the way in; the model grows it out of ordinary SDR. Working curve LogC3, code 1.0 = linear 55.08, and the primaries are left alone - the model already emits the right ones. In this mode the guide is an ordinary SDR image and no EXR is read at all; you wire the IC-LoRA into the model yourself. The LoRA is validated on LTX 2.3, with 2.5 support officially in development.
Mixing them shifts the color, so the choice matters. The input_color_space tells the path what your EXRs already are - ACESCG and SRGB_LINEAR are scene-linear and get encoded to the working curve for you; ACESCCT means the file is already encoded and passes through. Same three choices as the official --hdr flag.
The preview controls live here on purpose
preview_exposure_ev, preview_tonemap (reinhard_luma, aces_filmic, clip) and preview_dtype (FP16 halves the preview's memory - 1.5 GiB instead of 3.0 GiB for 129 frames at 1920×1088) belong to what you look at, never to what gets written. Exposure and tonemap are for the monitor; the EXR master is untouched by all of them.
There's also strict_validation (default on): refuse to continue on mismatched sizes, NaN/Inf, or an SDR image fed into the HDR branch, instead of quietly producing a master nobody can use.
Inputs and outputs
- enabled - the master switch (default off).
- input_color_space, output_color_space (default REC709_LINEAR), hdr_mode, strict_validation, preview_exposure_ev, preview_tonemap, preview_dtype.
Outputs: config - feed this into every other TS LTX HDR node - and enabled - the same switch as a plain boolean, for your own gating logic.
Installation
Part of the comfyui-timesaver pack. Install via ComfyUI Manager (search "Timesaver") or:
cd ComfyUI/custom_nodes
git clone https://github.com/AlexYez/comfyui-timesaver
cd comfyui-timesaver
python -m pip install -r requirements.txt
Restart ComfyUI. It's under TS/Video/HDR.
The honest framing
This node doesn't invent HDR out of an SDR clip. It preserves the HDR that came in - from EXR guide frames, through the model, out to an EXR master. If you're looking for "make my normal video HDR", that's the expand mode and the IC-LoRA, and its support status is what it is. But as the single switch for a real HDR pipeline, it's the node every other HDR node in this pack reads, so any HDR workflow starts here.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| enabled | BOOLEAN | false | Turn the native HDR path on. Off by default so that an old workflow opens behaving exactly as it did. |
| input_color_space | COMBO | ACESCG | What the EXR files already are. ACESCG and SRGB_LINEAR are scene-linear and get encoded to the working curve for you; ACESCCT means the file is already encoded and is passed through. Same three choices as the official --hdr flag. |
| output_color_space | COMBO | REC709_LINEAR | What the master comes out as. Scene-linear Rec.709 is what EXR savers assume when they say 'linear'. |
| strict_validation | BOOLEAN | true | Refuse to continue on mismatched sizes, NaN/Inf or an SDR image fed into the HDR branch, instead of quietly making a master nobody can use. |
| preview_exposure_ev | FLOAT | 0.0-16–16 | Exposure of the SDR preview, in stops. Affects only what you look at — never the EXR master. |
| preview_tonemap | COMBO | reinhard_luma | How the preview squeezes HDR onto an ordinary screen. reinhard_luma is the neutral one, aces_filmic is punchier, clip just cuts everything above 1.0. |
| preview_dtype | COMBO | FP16 | FP16 halves the memory the preview takes. For 129 frames at 1920x1088 that is 1.5 GiB instead of 3.0 GiB. |
| hdr_mode | COMBO | preserve HDR from EXR (ACEScct) | Which HDR technology this graph uses. 'preserve' is the native LTX 2.5 path: the range came in from an EXR and must survive (ACEScct). 'expand' is the HDR IC-LoRA: there was no range on the way in and the model grows it out of ordinary SDR (LogC3). They are different technologies with different curves — mixing them shifts the colour. The LoRA is validated on LTX 2.3; support for 2.5 is, officially, in development. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| config | TS_LTX_HDR_CONFIG | Feed this into every other TS LTX HDR node. |
| enabled | BOOLEAN | The same switch as a plain boolean, for your own gates. |