Why I dropped the toe of the tonemap
A small HDR decision with a big effect on pixel art: keeping the darks exactly as the artist painted them.
Adding HDR to Hydro meant rendering the scene into a 16-bit float target, so lanterns and emissive windows can go brighter than white, then bringing it back to the screen with exposure and a tonemap. I chose Khronos PBR Neutral, which is designed to leave colours alone where it can and only roll off the highlights.
The problem
PBR Neutral has a small "toe": it subtracts up to 0.04 in the darks. On photographic content that's invisible. On the Shrine Glade at night, measured against the same frame without HDR, it darkened the image by almost half and pushed the saturation up.
Pixel art is authored for exact darks. The palette was picked colour by colour; a curve that shifts shadows by a few values moves every dark tile off its intended colour.
The decision
Hydro's tonemap keeps PBR Neutral's highlight roll-off and leaves the toe out. Below 0.76 the curve is the identity, so everything that isn't bright looks exactly as without HDR. Brighter values roll off towards white, which is what HDR was for: glowing lanterns and bloom without clipping.
What sits around it
- Exposure multiplies by 2Exposure before the curve.
- Bloom uses the 13-tap downsample from Jimenez's 2014 talk, with Karis weighting against fireflies, and a soft-knee threshold.
- Grading (white balance, contrast, lift, gamma, gain, saturation) defaults to changing nothing.
- Depth of field gives the tilt-shift look: a sharp band where the player walks, using a gather blur that never lets a blurred background spread over a sharp foreground.
- All of it is set per scene, and can be shared through render profile files, instead of living on a camera component.
The lesson
A standard curve is a starting point, not a requirement. Measure it against your own content, and when the art style has a constraint (here: the darks are sacred), let the constraint win and write down why.