Tonemapping
The curve that squeezes a rendered scene's huge range of brightness into what a screen can show, and decides how highlights roll off and how bright colours change hue.
Tonemapping maps the brightness values a game renders, which can run from near zero to thousands, onto the 0 to 1 range a screen can display. Unreal's documentation states the purpose: "to map the wide range of high dynamic range (HDR) colors" to what the display can show (Unreal Engine Documentation: Color Grading and the Filmic Tonemapper). The tonemapper is the curve that does it. It decides how bright areas roll off to white, how much contrast the midtones get, and what happens to saturated colours as they brighten.
It is the second half of exposure: exposure picks which part of the range sits in the middle, the tonemapper compresses everything else.
#The common tonemappers
Godot 4 ships five, and its documentation summarises them (Godot Engine documentation: Environment and post-processing):
| Tonemapper | What Godot says it does |
|---|---|
| Linear | "Does not modify color data, resulting in a linear tonemapping curve which unnaturally clips bright values" |
| Reinhard | "A simple tonemapping curve that rolls off bright values to prevent clipping" |
| Filmic | A "film-like tonemapping curve" with "better contrast than Reinhard" |
| ACES | Uses "a high-contrast film-like tonemapping curve and desaturates bright values for a more realistic appearance" |
| AgX | "Better than other tonemappers at maintaining the hue of colors as they become brighter" |
Godot's White setting controls where the curve reaches display white; for photorealistic lighting it recommends values between 6.0 and 8.0, and with White left at 1.0 its Reinhard curve behaves like Linear (Godot Engine documentation: Environment and post-processing). Unreal's default is a filmic tonemapper that "matches the industry standard set by the Academy Color Encoding System (ACES)", with Slope, Toe, Shoulder, Black Clip and White Clip controls (defaults 0.88, 0.55, 0.26, 0 and 0.04) (Unreal Engine Documentation: Color Grading and the Filmic Tonemapper). Blender switched its default view transform to AgX in version 4.0, saying it "provides better color handling in over-exposed areas compared to Filmic" and that "bright colors go towards white, similar to real cameras" (Blender release notes: Blender 4.0: Color Management).
#Hue shifts in bright colours
The simplest tonemappers apply the same curve to red, green and blue separately. That compresses the strongest channel most, so the colour's hue changes as it brightens. Jasmin Patry of Sucker Punch describes the effect in his Ghost of Tsushima talk: "Per-channel tonemapping in the rendering color space clips saturated colors to cyan, magenta, and yellow" (SIGGRAPH 2021: Real-Time Samurai Cinema: Lighting…).
ACES itself has addressed the same issue. Its 2.0 output transform tonemaps only a lightness component in a JMh colour space and adjusts colourfulness separately, which keeps "the original hue" intact (ACES Documentation: Output Transforms).
#Effects on art assets
- Emissive and VFX values. A fire tuned under one curve looks wrong under another. See emissive materials.
- Albedo checks. Judge base colour in a neutral lighting setup, not through a heavy curve.
- HDR displays. The tonemapper targets a display. ACES output transforms take scene data and prepare it for "a specific display", through a rendering step and a display encoding step (ACES Documentation: Output Transforms).
Related: colour grading and LUTs, colour space: sRGB and linear, bit depth and banding, colour for environments.
#Further reading and watching
References
- · Color Grading and the Filmic Tonemapper · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Environment and post-processing · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
- · Blender 4.0: Color Management · Blender release notes, 2023 · docs · accessed 2026-10-21
- · Real-Time Samurai Cinema: Lighting, Atmosphere, and Tonemapping in Ghost of Tsushima · SIGGRAPH 2021, Advances in Real-Time Rendering in Games, 2021 · talk · accessed 2026-10-21
- · Output Transforms · ACES Documentation (ACES Central), 2026 · docs · accessed 2026-10-21
Pages that link here
- Colour space: sRGB and linear Key term
- Bit depth and banding Key term
- Emissive materials Key term
- Exposure and post-processing Topic
- Colour grading and LUTs Key term
- Exercise: lighting one scene four ways Exercise
Last updated 2026-10-22