Developer knowledge network · moderated exchange

UnreliableCode コミュニティ

開発者リサーチ、リバース エンジニアリング、コーディング コミュニティ

Tutorial

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

shader_magician
HLSL / GLSL Dev
MEMBER
担当者: 176
参加日: Jan 2021
投稿: 8
ありがとう: 32
1 か月前 · 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
担当者: 172
参加日: Sep 2018
投稿: 10
ありがとう: 51
1 か月前 · 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
担当者: 124
参加日: Jun 2019
投稿: 29
ありがとう: 72
1 か月前 · Jul 17, 2026 2:01 AM
#3

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