Nodes/comfyui-x2hdr/X2HDR Tone Map Preview
ComfyUI Node

X2HDR Tone Map Preview

Quick HDR previews without the grading rig — ACES, Reinhard, or log, pick your poison

By facok·Created 2 months ago·Updated about a month ago· 3
X2HDR Tone Map Preview
  • hdr_image
  • preview
  • preview_aces
  • preview_reinhard
  • preview_log
methodaces
white_percentile99.5
white_point0.0
exposure1.00
gamma2.20

Sometimes you don't need the full color-grade viewer. You just want to know what the decode actually looks like before you commit to saving. X2HDR Tone Map Preview is the quick look: it tone-maps linear HDR into an LDR preview using one of three curves, and returns all three if you want to compare.

How it works

For each frame it finds a white point - from the white_percentile of luminance, or your manual white_point if you set one above 0 - scales the HDR by exposure divided by that white point, applies the selected curve, then applies a display gamma. The curves:

  • ACES (default) - the filmic Narkowicz-style fit, the "looks like a movie" choice and the best all-rounder for a first glance.
  • Reinhard - x/(1+x), gentle and safe; keeps everything but squashes the highlights.
  • log - log2-based; flat, great for inspecting shadow detail, ugly as a final look.

Inputs

  • hdr_image - linear HDR.
  • method - aces / reinhard / log / all. all still returns ACES as the first output but exposes all three named outputs.
  • white_percentile (99.5) - auto white point; lower it to brighten, raise it to darken.
  • white_point (0 = auto) - set a fixed nits value to override the percentile behavior.
  • exposure (default 1) - a multiplier, not EV. 1 is neutral.
  • gamma (2.2) - display gamma applied after the curve.

Outputs

  • preview - follows method; ACES when method is all.
  • preview_aces, preview_reinhard, preview_log - all three rendered, so you can wire them into a compare or side-by-side and pick.

Four IMAGE outputs, all LDR. Wire whichever you like into a Preview Image node.

Installing it

Part of facok/comfyui-x2hdr. ComfyUI Manager → search comfyui-x2hdr → install, restart, nodes under image/HDR/X2HDR. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/facok/comfyui-x2hdr

then restart. The one extra dependency is PyAV (av), imported at load time; pip install av in ComfyUI's Python environment if the pack errors.

Where people get burned

  • It only renders a view - it doesn't change your HDR data. The previews are LDR, and the node never touches the tensor's values. If you want a graded HDR master, keep X2HDR Color Grade in the chain and save with X2HDR Save EXR.
  • The X2HDR Dynamic Range QA node uses the same tone mappers internally for its exposure strip, so if you like the look here, the QA strip will feel familiar. For anything you'll actually ship, though, reach for X2HDR Color Grade - this node is explicitly the peek, not the product.
Categoryimage/HDR/X2HDR

Inputs (6)

NameTypeDefaultDescription
hdr_imageIMAGE
methodCOMBOaces4 options: aces, reinhard, log, all
white_percentileFLOAT99.50–100
white_pointFLOAT0.00–100000
exposureFLOAT1.000.001–1000
gammaFLOAT2.200.1–8

Outputs (4)

NameTypeDescription
previewIMAGE
preview_acesIMAGE
preview_reinhardIMAGE
preview_logIMAGE