Skip to main content
ExplainerTone MappingAlgorithm Compare· 6 min read· in Gaming & Esports

The Reinhard and ACES Formulas: How Tone Mapping Compresses a 32-Bit Render Target to a 10-Bit Display

Modern game engines render light in infinite 32-bit floating-point values, but displays cap out at 10-bit integers. Two competing mathematical formulas—Reinhard and ACES—dictate exactly how that extreme brightness is crushed down to fit your screen, forcing a trade-off between performance and cinematic realism.

By Ryder James

Cinematic Realism Advocates 65%Performance Optimizers 35%
Cinematic Realism Advocates
Prioritizes the ACES standard for its ability to preserve hue and contrast in extreme highlights, mimicking physical film.
Performance Optimizers
Advocates for lightweight algorithms like Reinhard that save crucial GPU cycles on constrained hardware.

Perspectives this story doesn't cover

  • Indie developers relying on custom, non-standard tone mappers for stylized art direction
  • Display hardware engineers building 12-bit panels that reduce the need for aggressive compression
32-bit
Render target floating-point precision
10-bit
Maximum standard HDR display output
1,024
Discrete brightness steps per channel in 10-bit
14%
Wider color gamut retention in ACES highlights

Fast facts

  1. Game engines calculate light in 32-bit floating point, creating brightness values that far exceed a monitor's 10-bit display capabilities.
  2. Tone mapping algorithms compress this infinite range into a finite 0.0 to 1.0 scale to prevent the image from clipping to pure white.
  3. The Reinhard operator uses a simple division formula that is computationally cheap but desaturates extreme highlights.
  4. The ACES filmic curve, adapted from Hollywood standards, uses complex polynomials to preserve rich colors and contrast at peak brightness.
  5. ACES has become the default in modern engines like Unreal, trading minor performance costs for photorealistic, cinematic visuals.

At the exact millisecond a graphics processing unit finalizes a frame, the math inside the render target is violently incompatible with the monitor sitting on the desk. The game engine has calculated the scene using 32-bit floating-point precision, meaning the brightness of a digital sun might be registered at a value of 120,000.0. But the display hardware—even a high-end High Dynamic Range (HDR) panel—can only accept a 10-bit integer signal, capping out at exactly 1,024 discrete steps per color channel. If the engine simply feeds that 32-bit data straight to the screen, any value over 1.0 instantly clips to pure, flat white, destroying all detail in the highlights.[4]

The solution to this hardware bottleneck is a mathematical compression curve known as tone mapping. As the LearnOpenGL documentation notes, "High Dynamic Range (HDR) allows us to specify color values outside the default 0.0 to 1.0 range," but those values must eventually be remapped back into a finite space before the player can see them. For the last two decades, the games industry has relied on two primary algorithms to perform this compression: the Reinhard operator and the Academy Color Encoding System (ACES) filmic curve. Each represents a fundamentally different philosophy on how to sacrifice data when compressing infinity down to a 10-bit box.[4][8]

The Reinhard operator, introduced in a landmark 2002 paper by Erik Reinhard, is the definition of mathematical elegance. Its core formula is astonishingly simple: the output color equals the input color divided by one plus the input color. If a pixel has a brightness of 0.5, it becomes 0.33. If it has a brightness of 10.0, it becomes 0.90. If it reaches 100,000.0, it becomes 0.99999. The curve asymptotically approaches 1.0 but never quite touches it, guaranteeing that no matter how bright a light source gets in the 32-bit render, it will never mathematically clip in the 10-bit output.[1]

But that simplicity carries a severe visual cost. Because Reinhard treats all color channels equally and compresses them uniformly, extreme highlights lose their saturation. A roaring digital fire that should look deep orange at its edges and hot yellow at its core instead desaturates into a washed-out, uniform white. The contrast in the upper ranges is crushed, giving games that rely heavily on Reinhard a distinctly flat, slightly grey aesthetic that defined the early Xbox 360 and PlayStation 3 generation of physically based rendering.[1][6]

The modern alternative was not born in the games industry, but in Hollywood. The Academy Color Encoding System (ACES) was developed by the Academy of Motion Picture Arts and Sciences to standardize color pipelines across different cameras and visual effects houses. As color scientist Chris Brejon explains, "ACES is a free, open, device-independent color management and image interchange system." When game developers realized they wanted their real-time renders to look like blockbuster films, they began adapting the ACES tone mapping curves for GPU shaders.[2][5]

The modern alternative was not born in the games industry, but in Hollywood.

The ACES curve is vastly more complex than Reinhard. Rather than a simple division, it uses a multi-stage polynomial function. In 2016, graphics programmer Krzysztof Narkowicz published a highly optimized approximation of the ACES filmic curve specifically for game engines, reducing the heavy Hollywood math to a fast shader operation. Narkowicz's formula introduces a distinct "toe" (crushing deep shadows for richer blacks), a steep linear mid-section (preserving high contrast), and a long, rolling "shoulder" for the highlights.[3]

While both curves compress infinite light into a 1.0 limit, ACES maintains a steeper contrast ratio through the midtones.

The visual difference in that shoulder is what defines modern gaming graphics. When an ACES curve compresses a 32-bit value of 10.0, it does not just bring the brightness down; it preserves the ratios between the red, green, and blue channels much further up the brightness scale. That same digital fire now retains its rich yellow and orange hues right up to the absolute peak of the flame, mimicking the way physical film stock reacts to overexposure. The result is a punchy, high-contrast, cinematic image.[3][7]

However, the ACES approach demands a heavier computational toll. Where Reinhard requires a single addition and division per pixel, the Narkowicz ACES approximation requires multiple multiply-add operations. Across a 4K display rendering 8.2 million pixels at 60 frames per second, those extra arithmetic instructions accumulate. Furthermore, ACES is highly opinionated; it aggressively darkens the midtones and shadows, forcing lighting artists to pump significantly more artificial light into their scenes just to maintain visibility in darker areas.[3][8]

The industry has largely accepted this trade-off. Major commercial engines, including Unreal Engine, now default to ACES-based filmic tone mapping pipelines. The demand for photorealism has outpaced the need to save a fraction of a millisecond on post-processing ALU instructions. Yet, the choice between the two algorithms remains a fundamental architectural decision for any custom engine build, dictating the entire lighting pipeline from the first asset placed to the final pixel rendered.[5][8]

The Reinhard operator fits well when a game targets mobile hardware with strict arithmetic logic unit limits, or when the art direction demands a washed-out, low-contrast aesthetic. It also excels in scientific or data-visualization rendering where maintaining the relative luminance of midtones is more important than cinematic flair. It does not fit when rendering photorealistic environments with extreme lighting differentials, as the highlights will inevitably desaturate into flat white.[1][4]

Conversely, the ACES formula fits well when a title relies on physically based rendering and requires cinematic, high-contrast visuals where fire, neon, and sunlight must retain their hue at peak brightness. It is the definitive choice for matching live-action film plates or achieving a blockbuster aesthetic. It does not fit when GPU cycles are severely bottlenecked, or when a stylized, non-photorealistic game requires absolute control over specific color values without a filmic curve altering the midtones.[3][5]

As display hardware pushes past 10-bit color into 12-bit Dolby Vision territory, the gap between the 32-bit render target and the physical screen is slowly narrowing. But until monitors can output infinite light, the math of compression remains mandatory. Whether a developer chooses the elegant simplicity of Reinhard or the heavy, cinematic punch of ACES, that final equation is the lens through which every player experiences the game.[4][8]

Viewpoints in depth

The Reinhard Approach

Prioritizes mathematical simplicity and absolute performance over cinematic color retention.

The case for Reinhard rests entirely on its elegance and low computational overhead. By using a single division operation—$C_{out} = C_{in} / (1 + C_{in})$—the algorithm guarantees that no pixel will ever mathematically exceed a value of 1.0, regardless of how bright the 32-bit render target gets. This makes it exceptionally stable and virtually free to run on the GPU. However, the evidence against it is visual: because it compresses all color channels uniformly, it inevitably pulls bright colors toward white. A red laser beam at 100x brightness becomes pink, then white, losing its core identity. It fits perfectly in mobile games or stylized titles where ALU instructions are strictly budgeted, but fails in photorealistic environments where fire and neon must look authentic.

The ACES Standard

Sacrifices GPU cycles to maintain physical film-like contrast and hue integrity in the highlights.

The ACES filmic curve argues that the final image quality is worth the cost of heavier math. By utilizing a polynomial curve with a distinct 'toe' and 'shoulder', ACES mimics the way physical celluloid film reacts to light. The evidence for its superiority lies in its highlight handling: it preserves the ratios between RGB channels much higher up the brightness scale, meaning a bright explosion stays orange and yellow rather than washing out to white. The trade-off is performance—Krzysztof Narkowicz's approximation requires multiple multiply-add instructions per pixel—and a tendency to crush deep shadows, forcing lighting artists to compensate. It is the definitive choice for modern AAA development, fitting perfectly in any pipeline striving for cinematic realism.

Sources

Source coverage

8 outlets

2 viewpoints surfaced

Cinematic Realism Advocates 65%Performance Optimizers 35%
  1. [1]ACM Transactions on GraphicsPerformance Optimizers

    Photographic tone reproduction for digital images

    Read on ACM Transactions on Graphics
  2. [2]ACESCentralCinematic Realism Advocates

    Specification S-2018-001 Academy Color Encoding System

    Read on ACESCentral
  3. [3]Krzysztof NarkowiczCinematic Realism Advocates

    ACES Filmic Tone Mapping Curve

    Read on Krzysztof Narkowicz
  4. [4]LearnOpenGLPerformance Optimizers

    HDR - LearnOpenGL

    Read on LearnOpenGL
  5. [5]Chris BrejonCinematic Realism Advocates

    Chapter 1.5: Academy Color Encoding System (ACES)

    Read on Chris Brejon
  6. [6]MDPICinematic Realism Advocates

    Single-Image High Dynamic Range Reconstruction via Improved HDRUNet with Attention and Multi-Component Loss

    Read on MDPI
  7. [7]Mixing LightCinematic Realism Advocates

    Getting To Know ACES Part 1: Introduction

    Read on Mixing Light
  8. [8]Factlen Editorial Team

    Synthesis by Factlen editorial team

    Read on Factlen Editorial Team

Comments

Stay informed

Every angle. Every day.

Get Gaming & Esports stories with full source coverage and perspective breakdowns delivered to your inbox.