Nodes/radiance/HDR Turbo Encoder (Legacy)
ComfyUI Node

HDR Turbo Encoder (Legacy)

Why you shouldn't wire this one up

By FXTD-Studios·Created 8 months ago·Updated about 18 hours ago· 246
HDR Turbo Encoder (Legacy)
  • image
  • vae
  • latent
◄compression_ratio0.50►
◄exposure_offset0.0►

Sometimes the most useful article about a node is the one that tells you not to use it. HDR Turbo Encoder is deprecated, hidden from the node menu in 3.5.0, and its partner decoder was retired - which means a latent produced by this node has nothing in the pack that can turn it back into HDR. It comes back compressed and clipped.

If you're here because a workflow you downloaded from a year ago has one of these sitting in it: the fix is a one-node swap. Read on for what it did and what to use instead.

What it was for

The idea was to take a scene-linear HDR image, squeeze it into [0, 1] so that LTX-Video's display-referred VAE wouldn't choke on it, then encode to a latent that a diffusion sampler could work with. Values above 1.0 don't survive an ordinary VAE encode - they get clamped and your highlights turn into flat white - so the compression step was the whole point.

compression_ratio mirrors LTX-Video's own tone_map_compression_ratio, and the mapping is worth understanding because it's the same trade in any compressor:

  • 0.0 - hard clamp. Midtones come through untouched, highlights die.
  • 0.5 (default) - a gentle knee. Reasonable balance for maybe four to six stops of overexposure.
  • 1.0 - full Reinhard tone map. Maximum highlight survival, at the cost of roughly a stop of overall luminance shift.

exposure_offset is applied in scene-linear before the compression, which is the correct place for it.

The reason this was retired is in the source comments and it's a good lesson: an earlier version log-encoded to LogC4 / S-Log3 before the VAE. The VAE had never seen log-space data in training, so the encoder was feeding it a distribution mismatch - a training-domain error disguised as a colour-management feature. That's the kind of thing that produces "the pack's HDR mode doesn't work" posts.

Inputs and outputs

Required: image, vae, compression_ratio, exposure_offset. Outputs a single latent - and this is the problem. There's no decoder. Any standard VAE Decode you wire it into returns SDR values with the highlights clamped, because the latent's extra range was never recoverable.

The node stays registered so old graphs still open and don't turn into a wall of red errors. It's a compatibility shim now, not a tool.

What to use instead

VAE Encode (HDR) does this job properly. Its hdr_mode offers the same four ideas, but the recommended setting - Compress (Log) - is a coding that VAE Decode (HDR) can invert exactly, because the encode stamps the latent with metadata describing what it did. Measured through an SD VAE on an HDR plate peaking at 7.75, Compress (Log) comes back with highlights within about 0.03 stops (median error) and keeps 97% of the values above 1.0. That's not a marketing number, it's the author's own test note in the source.

So the migration is: delete the Turbo Encoder, drop in VAE Encode (HDR) with hdr_mode = Compress (Log), and decode with VAE Decode (HDR) in Auto. If you were running HDR Per-Channel Norm in front of it, that's now optional - VAE Encode (HDR) handles the coding itself.

Installing Radiance

Manager → search Radiance → install → restart ComfyUI → refresh. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/fxtd-studios/radiance.git
cd radiance
python -m pip install -r requirements.txt

Windows portable: use python_embeded\python.exe. No downloads needed for either the legacy node or its replacement.

Troubleshooting

"It's missing from my node search." Correct behaviour. Deprecated nodes are hidden from the menu in 3.5.0; they only appear in graphs that already reference them.

My old workflow loads but the output is clipped. Yes. The decoder for this latent doesn't exist anymore. Swap to VAE Encode (HDR) - same position in the graph, one input rename (pixels instead of image) and a hdr_mode setting.

I upgraded and now the node name has changed. Radiance renamed a lot of widgets and node display names in 3.5. Workflow node keys were deliberately kept stable so saved graphs still load, but widget layouts moved, so check the migration notes in the pack's CHANGELOG before assuming something is broken.

General Radiance advice. This pack installs a lot: OpenEXR, OpenImageIO, OpenColorIO, diffusers, accelerate, and 147 nodes including a viewer and a project manager. That's a large footprint in your ComfyUI Python environment. ComfyUI has no dependency isolation - packs share one interpreter - so if you're the kind of person who has a main install and a "dangerous experiments" install, this pack belongs in the second one.

CategoryFXTD STUDIOS/Radiance/HDR

Inputs (4)

NameTypeDefaultDescription
imageIMAGE—
vaeVAE—
compression_ratioFLOAT0.500–10.0 = hard clamp, 1.0 = full Reinhard tone-map. Mirrors LTX-Video tone_map_compression_ratio.
exposure_offsetFLOAT0.0-10–10EV offset applied before compression (scene-linear).

Outputs (1)

NameTypeDescription
latentLATENT—