Assetto Corsa: Content Manager: Tuning dxgi.ini for Pure HDR

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

  1. Requirement: Install the latest version of Pure and CSP. You also need ReShade with the “Lilium’s HDR Shaders” or the native AutoHDR wrapper.
  2. Navigate to: [Assetto Corsa Install Folder]\dxgi.ini (This file is created after installing ReShade/SpecialK).
  3. 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

ParameterRecommended ValueTechnical Purpose
HDR10EnabledEnables the 10-bit signaling to the monitor.
SDR_White_Level80 to 120Sets the baseline for UI elements to prevent “blinding” menus.
Max_LuminanceMatch Monitor NitsTells the engine your display’s peak brightness (e.g., 600, 1000).
ColorSpace1 (ScRGB)The Core Fix. Provides a wider gamut for Pure’s sunset colors.
ToneMapBypassAllows 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:

  1. 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.
  2. 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.
  3. 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.ini wrapper is based on real-world lux values.
  4. Black Level Correction: In the [Display.HDR] section, set Min_Luminance to 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.
  5. UI Intensity Fix: One of the biggest issues with HDR in AC is the blinding white HUD. Use the SDR_White_Level variable 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.

Leave a Comment