Nodes/SDXL Auto Prompter/APNext HDR Tone Mapping FX
ComfyUI Node

APNext HDR Tone Mapping FX

Reinhard, Filmic and ACES looks for your renders

By dagthomas·Created 3 years ago·Updated 13 days ago· 283
APNext HDR Tone Mapping FX
  • images
  • image
methodReinhard
exposure0.00
gamma2.20
intensity1.00
white_point1.00
key_value0.18
adaptation1.00
color_correction1.00
local_adaptationfalse
radius0.10

Tone mapping is how you take an image with a huge range of brightness and squeeze it into something that looks good on a normal screen without blowing out the highlights or crushing the shadows. Film and 3D renderers do this with named "tone curves" - Reinhard, Filmic, ACES - and each gives a distinct character. APNext HDR Tone Mapping FX brings those same curves to a ComfyUI image, which is a quick way to give a flat, digital-looking render the tonal roll-off of real photography or a cinema pipeline.

Image in, image out, after VAE decode. No model, no API key.

How it works

You pick a method - the tone-mapping operator - and the node remaps the image's brightness through that curve. The seven options split into two camps. Reinhard, Drago, Mantiuk, Photographic, and Adaptive_Log are classic HDR operators, more neutral. Filmic and ACES are the cinema-look curves: they give highlights a graceful shoulder (bright areas roll off softly instead of clipping to white) and are what most people are actually after when they reach for this. exposure and gamma set the overall brightness and midtone response; the rest (white_point, key_value, adaptation) fine-tune where the curve puts its anchor points.

The local_adaptation toggle switches from a single global curve to a region-aware one that can pull local contrast out of an image, with radius controlling the neighborhood size. It's more dramatic and slower - worth trying, but the global default is the safe start.

Inputs and outputs that matter

  • images - your decoded image.
  • method - the operator. Try ACES or Filmic first for a cinematic look; Reinhard for something neutral.
  • exposure (−3 to +3) - overall brightness before the curve. The main dial.
  • gamma (default 2.2) - midtone brightness; 2.2 matches standard displays, so leave it unless you know why you're changing it.
  • intensity - how strongly the tone map is applied versus the original.
  • local_adaptation (boolean) - flip on for punchier local contrast; leave off for a clean global curve.

The single output is image.

Installing it

ComfyUI Manager: search comfyui_dagthomas, install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/dagthomas/comfyui_dagthomas
cd comfyui_dagthomas
pip install -r requirements.txt

Runs on the pack's image dependencies. No API key, no model downloads.

Common issues

The subtle trap is that a normal diffusion output isn't a true HDR image - it's already a standard 8-bit-range picture - so tone mapping it is really a stylistic re-grade, not real dynamic-range recovery. That's fine, it still looks good, just don't expect it to rescue genuinely blown highlights that were never captured. ACES in particular can shift colors toward that desaturated, orange-teal cinema palette; if that's not what you want, Reinhard stays closer to the original hues.

If local_adaptation gives you a grungy, over-sharpened HDR-photography look (the kind that got a bad name in the 2010s), that's the effect being too strong - lower intensity or turn local adaptation back off. Put this node early in your post chain, before grain and halation, so those film effects sit on top of the tone-mapped image.

Categorycomfyui_dagthomas/APNext FX Advanced

Inputs (11)

NameTypeDefaultDescription
imagesIMAGE
methodCOMBOReinhard7 options: Reinhard, Drago, Mantiuk, Photographic, Adaptive_Log, Filmic, +1
exposureFLOAT0.00-3–3
gammaFLOAT2.200.5–4
intensityFLOAT1.000–3
white_pointFLOAT1.000.1–10
key_valueFLOAT0.180.01–1
adaptationFLOAT1.000–1
color_correctionFLOAT1.000–2
local_adaptationBOOLEANfalse
radiusFLOAT0.100.01–1

Outputs (1)

NameTypeDescription
imageIMAGE