Nodes/ComfyUI_ColorMod/Tonemap (Reinhard)
ComfyUI Node

Tonemap (Reinhard)

The photographic default that usually just works

By city96·Created 3 years ago·Updated 2 years ago· 111
Tonemap (Reinhard)
  • image
  • IMAGE
gamma1.00
intensity0.00
light_adapt1.00
color_adapt1.00
mult1.00

Reinhard tonemapping is the classic photographic operator - the one behind the "global" HDR look that dominated the 2000s HDR photography boom, and the default people usually reach for first. This node wraps OpenCV's createTonemapReinhard with the same mult addition the rest of the pack has, and it's the tonemap I'd hand a beginner first: predictable, gentle, and much less likely to nuke your image than Mantiuk or Drago.

Feed it the HDR image that came out of Create HDR image (or Load Image (HDR)) and it compresses the range back to [0, 1] - which is exactly what you need before the image gets anywhere near a VAE or sampler.

The inputs that matter

  • gamma (default 1.0) - post-tonemap gamma. The main "make it look right" knob.
  • intensity (default 0.0) - how strongly the global compression darkens things. Zero is the neutral default; crank it positive to pull bright areas down. This one can go negative, which reduces the compression effect.
  • light_adapt (default 1.0) and color_adapt (default 1.0) - these control how the eye-adaptation model behaves: how much local brightness and color information influence the result. At the defaults the effect is "full adaptation," which is the safe place to start. Lowering them changes the character of the mapping.
  • mult (default 1.0) - the pack's non-standard brightness multiplier. For HDR input, try 2–3, per the README.
  • image in, one IMAGE out.

Installing

Part of the ColorMod pack, needs OpenCV:

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

Restart, or install via ComfyUI Manager ("ComfyUI_ColorMod"). If the node is missing, opencv isn't installed - check the console for "Can't find opencv!" at startup.

How to actually tune it

The README warns all the tonemap nodes "require some testing," and Reinhard is no exception, but the good news is the knobs mostly do what they sound like. My usual order: leave light_adapt and color_adapt at 1, set mult to 2–3 for HDR, and adjust gamma for midtone brightness. Only touch intensity if the result is too dark or too flat overall - and remember the whole thing is guesswork because generated images don't have real exposure values to ground it.

Also worth knowing: this node (like the rest of the tonemap family) behaves a little differently for HDR vs SDR input. For a normal [0, 1] image you don't really need it - save the tonemaps for the HDR pipeline and keep SDR images on the ColorMod curve nodes instead.

CategoryColorMod/tonemap

Inputs (6)

NameTypeDefaultDescription
imageIMAGE
gammaFLOAT1.000–8
intensityFLOAT0.00-8–8
light_adaptFLOAT1.000–1.6
color_adaptFLOAT1.000–1.6
multFLOAT1.000–8

Outputs (1)

NameTypeDescription
IMAGEIMAGE