Exposure and post-processing
How engines turn a high-dynamic-range render into the final image; exposure and EV100, auto exposure, tonemappers (Filmic, ACES, AgX), colour grading with LUTs, bloom and depth of field, and the debate about film grain and chromatic aberration.
Exposure decides how the brightness of a rendered scene maps to the brightness of the screen. Post-processing is everything the engine does to the finished image after that: tonemapping, colour grading, bloom, depth of field and the rest. Together they are the last step between your lighting and what the player sees, so a well-lit scene can still look wrong if this step is off.
Modern engines render in high dynamic range (HDR): a sunlit wall can be thousands of times brighter than a shadowed corner. A screen cannot show that range, so exposure picks the window of brightness to show and the tonemapper squeezes the rest into it. Unity's HDRP documentation states: "To work with physically based lighting and Materials, you need to set up the Scene exposure correctly" (High Definition RP 17 documentation: Exposure).
#Exposure and EV
Photographers measure exposure in exposure values (EV). Each step of one EV is a doubling or halving of light. Unity's HDRP "expresses all exposure values that it uses in EV100" (High Definition RP 17 documentation: Exposure), meaning EV at ISO 100, and Unreal uses the same scale (Unreal Engine Documentation: Auto Exposure).
Real light levels span a huge range: a typical scene in full sun is EV 15, heavy overcast EV 12, home interiors EV 5 to 7, and a full moon EV −3 to −2 (Wikipedia: Exposure value). If your game moves between a house and a sunny street, exposure has to cover at least that 8 to 10 stop gap.
Unreal defines the relationship in its documentation: with physical camera settings, EV100 = log2(Aperture² / Shutter Speed × 100 / ISO), and the final exposure is 1 / 2^(EV100 + Exposure Compensation) (Unreal Engine Documentation: Auto Exposure). Exposure Compensation is logarithmic: "1 is two times brighter, and 2 is four times brighter" (Unreal Engine Documentation: Auto Exposure).
#Auto exposure
Auto exposure (eye adaptation) measures the image and adjusts exposure over time, like your eyes do when you step outside.
Unreal offers three metering modes (Unreal Engine Documentation: Auto Exposure):
- Auto Exposure Histogram, "the default exposure metering mode", based on a 64-bin brightness histogram.
- Auto Exposure Basic, faster, with fewer settings.
- Manual, a single fixed value "unaffected by the luminance in the scene".
The important controls are Min and Max EV100, which clamp how far adaptation can go, and Speed Up and Speed Down, how quickly it adapts from dark to bright and back (Unreal Engine Documentation: Auto Exposure). For the histogram, Epic suggests starting with Low Percent at 70 to 80 and High Percent at 80 to 95 (Unreal Engine Documentation: Auto Exposure). Godot's auto exposure has similar Min and Max, Speed and Scale settings, but only in its Forward+ renderer (Godot Engine documentation: Environment and post-processing).
Local exposure keeps detail in both highlights and shadows on top of the global exposure (Unreal Engine Documentation: Auto Exposure). Epic says it "should always be set up when using Lumen Global Illumination" (Unreal Engine Documentation: Auto Exposure), and Fortnite's team repeated the advice (Unreal Engine tech blog: Lumen brings real-time global illumination to…).
#Tonemapping
A tonemapper is a curve that maps HDR scene values to the 0–1 range of the display. Without one, everything brighter than display white clips to flat white.
Godot's documentation describes its options (Godot Engine documentation: Environment and post-processing):
| Tonemapper | What it does | Cost |
|---|---|---|
| Linear | "Does not modify color data" | "The simplest and fastest" |
| Reinhard | "Rolls off bright values to prevent clipping" | Slower than Linear |
| Filmic | A film-like curve with "better contrast than Reinhard" | Slightly slower |
| ACES | "High-contrast film-like" curve that "desaturates bright values for a more realistic appearance" | Slightly slower than Filmic |
| AgX | "Better than other tonemappers at maintaining the hue of colors as they become brighter" | "The slowest tonemapping option" |
For photorealistic lighting, Godot recommends a White value between 6.0 and 8.0; higher values blow out less but can look lower in contrast (Godot Engine documentation: Environment and post-processing).
#Colour grading
Colour grading shifts the colours of the final image for mood: teal shadows, warm highlights, desaturation for a war film. Most engines grade with a LUT (look-up table), a small 3D texture that maps every input colour to an output colour.
- Godot applies Brightness, Contrast, Saturation and colour correction "after tonemapping"; its 3D LUT template uses 33 slices (Godot Engine documentation: Environment and post-processing).
- Unity URP offers High Dynamic Range or Low Dynamic Range grading modes, with HDR described as working "best for high precision grading similar to movie production workflows". The default LUT size of 32 "provides a good balance of speed and quality" (Universal RP 17 documentation: Universal Render Pipeline Asset).
Grading is a tool for art direction; see colour for environments and value.
#Other common effects
- Bloom (glow). Bright pixels bleed light into their surroundings. In Godot the threshold "is expected to be at 1.0", so only values brighter than display white glow (Godot Engine documentation: Environment and post-processing). Pair it with emissive materials.
- Ambient occlusion (SSAO). Screen-space darkening in creases. Godot notes that SSAO "only acts on ambient light. It does not affect direct light" (Godot Engine documentation: Environment and post-processing). See ambient occlusion.
- Depth of field. Blurs what is out of focus, "to focus the viewer's attention on a given object" (Godot Engine documentation: Environment and post-processing). With physical camera attributes, Godot computes it from focus distance, focal length and aperture (Godot Engine documentation: Environment and post-processing). See cameras, lenses and field of view.
- Motion blur, film grain, chromatic aberration, vignette. Lens and film imitations. These are the most debated effects in games (see below).
#In different engines
| Unreal Engine 5 | Unity 6 | Godot 4 | |
|---|---|---|---|
| Exposure units | EV100 (Unreal Engine Documentation) | EV100 in HDRP (High Definition RP 17 documentation) | Exposure multiplier; physical camera attributes optional (Godot Engine documentation) |
| Auto exposure | Histogram (default), Basic, Manual; Local Exposure (Unreal Engine Documentation) | HDRP exposure override (High Definition RP 17 documentation) | Forward+ only (Godot Engine documentation) |
| Tonemappers | Exposure Compensation applies only when a tonemapper is used (Unreal Engine Documentation) | — | Linear, Reinhard, Filmic, ACES, AgX (Godot Engine documentation) |
| Grading | — | HDR or LDR grading, LUT size 32 by default (URP) (Universal RP 17 documentation) | Adjustments and 3D LUT after tonemapping (Godot Engine documentation) |
#Common mistakes
- Fixing exposure with light intensity. Lights end up at random values and every scene needs rework (Unreal Engine Documentation: Using Physical Lighting Units).
- No limits on auto exposure. Dark rooms adapt to flat grey and the mood disappears (Unreal Engine Documentation: Auto Exposure).
- A bloom threshold below 1.0. The whole image goes hazy instead of just the bright parts (Godot Engine documentation: Environment and post-processing).
- Changing tonemapper late. Every emissive, sky and effect needs retuning (Godot Engine documentation: Environment and post-processing).
- Mandatory lens effects. Players may remove them with mods (TechSpot: Assassin's Creed Mirage players employ mods…).
#Further reading and watching
References
- · Exposure · High Definition RP 17 documentation, 2026 · docs · accessed 2026-10-21
- · Auto Exposure · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Exposure value · Wikipedia, 2026 · web · accessed 2026-10-21
- · Environment and post-processing · Godot Engine documentation (source on GitHub), 2026 · docs · accessed 2026-10-21
- · Lumen brings real-time global illumination to Fortnite Battle Royale Chapter 4 · Unreal Engine tech blog, 2022 · article · accessed 2026-10-21
- · Using Physical Lighting Units · Unreal Engine Documentation, 2026 · docs · accessed 2026-10-21
- · Universal Render Pipeline Asset · Universal RP 17 documentation, 2026 · docs · accessed 2026-10-21
- · Death Stranding and Other Games' Filter Toggles Are Splitting Players · GameGeeker, 2026 · article · accessed 2026-10-21
- · Assassin's Creed Mirage players employ mods to sidestep unwanted chromatic aberration · TechSpot, 2023 · article · accessed 2026-10-21
Pages that link here
- Roles in 3D game production Topic
- Value Topic
- Colour for environments Topic
- Light and shadow Topic
- Cameras, lenses and field of view Topic
- Emissive materials Key term
- Specular aliasing Key term
- Real-time lighting Topic
- Physical light units Key term
- Ray tracing Key term
- Tonemapping Key term
- Colour grading and LUTs Key term
- Fog and atmosphere Topic
- Sky, clouds and volumetrics Key term
- Time of day Key term
- Level design and environment art Overview
- Frame budgets Key term
- Portfolio advice from industry professionals Reference
- Exercise: lighting one scene four ways Exercise
- A 12-month learning roadmap Guide
Last updated 2026-10-22