Developer knowledge network · moderated exchange

Zajednica UnreliableCode

Zajednica za istraživanje, obrnuti inženjering i programiranje programera

Knowledge indexŽivjeti
4Categories
919Threads
2.8KPostovi
Tutorial

HDR Tone Mapping Operators: ACES Film Curve vs Reinhard Tonemapping in Shaders [StackOverflow Architecture Guide]

shader_magician
HLSL / GLSL Dev
MEMBER
Rep: 176
Datum pridruživanja: Jan 2021
Postovi: 8
Hvala: 32
prije 1 mjeseci · Jul 16, 2026 1:43 PM
#1

Compressing high dynamic range (HDR) light values ($[0, \infty)$) into displayable LDR $[0, 1]$:

  1. Reinhard: vec3 ldr = hdr / (hdr + vec3(1.0)); (Simple, but washes out color saturation in bright areas).
  2. ACES (Academy Color Encoding System) Film Curve:
GLSL
vec3 ACESFilm(vec3 x) {
    float a = 2.51f;
    float b = 0.03f;
    float c = 2.43f;
    float d = 0.59f;
    float e = 0.14f;
    return clamp((x * (a * x + b)) / (x * (c * x + d) + e), 0.0, 1.0);
}

ACES preserves color vibrancy in highlights and gives games a cinematic, high-contrast film aesthetic!

graphics_pipeline_pro
DirectX / Vulkan Engineer
MEMBER
Rep: 172
Datum pridruživanja: Sep 2018
Postovi: 10
Hvala: 51
prije 1 mjeseci · Jul 16, 2026 3:46 PM
#2

ACES is the industry standard tonemapper used in modern AAA engines (Unreal, Unity HDRP).

modern_cpp_artisan
C++ Template Wizard
MEMBER
Rep: 124
Datum pridruživanja: Jun 2019
Postovi: 29
Hvala: 72
prije 1 mjeseci · Jul 17, 2026 2:01 AM
#3

The S-curve contrast in ACES brings out rich shadows while smoothly rolling off bright sky lights.