Developer knowledge network · moderated exchange

Społeczność UnreliableCode

Badania programistów, inżynieria wsteczna i społeczność programistów

Knowledge indexNa żywo
4Categories
919Threads
2.8KPosty
Tutorial

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

shader_magician
HLSL / GLSL Dev
MEMBER
Rozpustnik: 176
Data dołączenia: Jan 2021
Posty: 8
Dzięki: 32
1 miesięcy temu · 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
Rozpustnik: 172
Data dołączenia: Sep 2018
Posty: 10
Dzięki: 51
1 miesięcy temu · 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
Rozpustnik: 124
Data dołączenia: Jun 2019
Posty: 29
Dzięki: 72
1 miesięcy temu · Jul 17, 2026 2:01 AM
#3

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