Nodes/comfyui-timesaver/TS LTX HDR Settings
ComfyUI Node

TS LTX HDR Settings

One switch that turns the whole LTX 2.5 HDR path on — and off for free

By AlexYez·Created 2 years ago·Updated about 22 hours ago· 12
TS LTX HDR Settings
    • config
    • enabled
    enabledfalse
    input_color_spaceACESCG
    output_color_spaceREC709_LINEAR
    strict_validationtrue
    preview_exposure_ev0.0
    preview_tonemapreinhard_luma
    preview_dtypeFP16
    hdr_modepreserve HDR from EXR (ACEScct)

    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.

    CategoryTS/Video/HDR

    Inputs (8)

    NameTypeDefaultDescription
    enabledBOOLEANfalseTurn the native HDR path on. Off by default so that an old workflow opens behaving exactly as it did.
    input_color_spaceCOMBOACESCGWhat 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_spaceCOMBOREC709_LINEARWhat the master comes out as. Scene-linear Rec.709 is what EXR savers assume when they say 'linear'.
    strict_validationBOOLEANtrueRefuse 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_evFLOAT0.0-16–16Exposure of the SDR preview, in stops. Affects only what you look at — never the EXR master.
    preview_tonemapCOMBOreinhard_lumaHow 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_dtypeCOMBOFP16FP16 halves the memory the preview takes. For 129 frames at 1920x1088 that is 1.5 GiB instead of 3.0 GiB.
    hdr_modeCOMBOpreserve 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)

    NameTypeDescription
    configTS_LTX_HDR_CONFIGFeed this into every other TS LTX HDR node.
    enabledBOOLEANThe same switch as a plain boolean, for your own gates.