The primary objective is to bypass the standard SDR-to-HDR tone mapping used by Windows and instead force a high-bit-depth buffer ($B_{10bit}$) that Pure can utilize for its physical lighting calculations.
File Path & Setup
- Requirement: Install the latest version of Pure and CSP. You also need ReShade with the “Lilium’s HDR Shaders” or the native AutoHDR wrapper.
- Navigate to:
[Assetto Corsa Install Folder]\dxgi.ini(This file is created after installing ReShade/SpecialK). - Pro Tip: If you are using SpecialK instead of ReShade, the file may be named
SpecialK.ini. The logic remains the same: we are targeting the[Display.HDR]header.
Optimized “Luminance Precision” Configuration Table
| Parameter | Recommended Value | Technical Purpose |
HDR10 | Enabled | Enables the 10-bit signaling to the monitor. |
SDR_White_Level | 80 to 120 | Sets the baseline for UI elements to prevent “blinding” menus. |
Max_Luminance | Match Monitor Nits | Tells the engine your display’s peak brightness (e.g., 600, 1000). |
ColorSpace | 1 (ScRGB) | The Core Fix. Provides a wider gamut for Pure’s sunset colors. |
ToneMap | Bypass | Allows Pure’s internal scripts to handle the lighting contrast. |
HowTo: Engineering the Pure HDR Workflow
Follow these GameEngineer.net technical steps to synchronize your shaders:
- The ScRGB Hook: In your
dxgi.ini, ensure the color space is set to ScRGB Linear. Unlike HDR10 (PQ), ScRGB allows for values above 1.0, which Pure uses to calculate sun intensity ($I_{sun}$). This prevents the sun from looking like a flat white circle. - CSP Integration: Inside Content Manager, go to Settings > Custom Shaders Patch > Graphic Adjustments. Ensure “Post-processing Antialiasing” is set to CMAA 2.0. This works best with the HDR buffer to prevent “shimmering” on the edges of glowing brake discs.
- Pure Script Override: Open the Pure Config in-game (overlay). Under the “Lighting” tab, set Luminance Range to “Physical.” This ensures the data being sent to the
dxgi.iniwrapper is based on real-world lux values. - Black Level Correction: In the
[Display.HDR]section, setMin_Luminanceto 0.0001. Modern OLED and Mini-LED screens benefit from this, as it allows Pure to render “Perfect Blacks” in night sessions at Le Mans or Nordschleife. - UI Intensity Fix: One of the biggest issues with HDR in AC is the blinding white HUD. Use the
SDR_White_Levelvariable to dim the UI elements independently of the game world’s peak brightness.
Technical Explanation: Linear Color Space ($C_{linear}$)
Assetto Corsa was originally designed for the sRGB Gamma curve. When we use Pure and a dxgi.ini hook, we are transforming that curve into a Linear Space.
$$L_{output} = (L_{input})^{2.2} \times Max\_Nits$$
By engineering the dxgi.ini to bypass standard tone mapping, we allow the Pure Script to act as the primary “Director.” Instead of the game “guessing” how bright the sun should be, the engine calculates the light bounces ($L_{bounce}$) in a 16-bit float buffer and then maps it precisely to your monitor’s hardware capabilities via the DXGI Swapchain. This results in a “lifelike” image where the sky maintains detail even when the track is in deep shadow.