Extended Reinhard with White Point
Apply extended Reinhard tone mapping with white point control.
The basic Reinhard operator never reaches pure white (1.0) because it asymptotically approaches 1. The extended version allows control over which luminance value maps to white:
where is the luminance value that should map to pure white (1.0).
Properties:
- When : (reaches pure white)
- When : behaves like basic Reinhard
- Allows intentional "burning out" of very bright highlights
This gives photographers control similar to choosing paper white in traditional printing.
Example
reinhard_extended(1.0, 2.0)
0.625
- Inputs: is the scene luminance of one HDR pixel, and is the luminance you want to land exactly on pure white.
- White-point term: the extra factor in the numerator is . It grows with , which is what lets the curve climb all the way to 1.
- Plugging in: , rounded to 4 decimal places gives
0.625. - Compare with basic Reinhard: without the white-point term you would get , so the extended curve brightens this midtone a little.
- Notice that setting gives exactly, and inputs brighter than go above 1 (for example gives ). That is the intentional burn-out of highlights the description mentions.
Constraints
- L is HDR luminance value (non-negative)
- L_white is the white point luminance (positive)
- Return tone-mapped value rounded to 4 decimal places
- When L = L_white, output should be 1.0