The dxgi.ini (or SpecialK.ini) acts as the primary configuration for the injection engine. By manually defining these values, you can bypass the in-game UI to force high-bitrate swapchains and define luminance clipping points tailored to your monitor’s Nits.
File Path
If you are using Global Injection, the settings are stored in the profile folder. If using Local Injection (DLL renaming), the file will be in the game’s executable folder.
[Game Path]\dxgi.ini OR %USERPROFILE%\Documents\My Mods\SpecialK\Profiles\[GameName]\SpecialK.ini
Optimized “Deep Black & High Peak” Configuration
Add or modify the following sections in your dxgi.ini. This configuration forces the engine into a 16-bit scRGB mode, which is the most accurate way to inject HDR into older DirectX 11 and 12 titles.
| Section | Parameter | Value | Technical Purpose |
[Render.DXGI] | Use16BitSwapChain | true | Vital. Prevents banding by using a 64-bit color buffer ($4 \times 16\text{-bit}$). |
[Render.DXGI] | UseFlipDiscard | true | Required for modern Windows HDR presentation. |
[SpecialK.HDR] | ToneMapper | 1 | ACES Filmic. Provides a natural roll-off for highlights. |
[SpecialK.HDR] | Saturation | 1.1 | Compensates for the slight desaturation in HDR conversion. |
[SpecialK.HDR] | Brightness | [Max Nits / 80] | Scales the brightness. (e.g., 12.5 for 1000 Nits). |
[Render.DXGI]
Use16BitSwapChain=true
UseFlipDiscard=true
AllowFullLuminance=true
[SpecialK.HDR]
; ToneMapper: 0=Passthrough, 1=ACES Filmic, 2=HDR10 Passthrough
ToneMapper=1
scRGBLuminance=12.5 ; 12.5 * 80 = 1000 Nits (Adjust for your display)
scRGBGamma=1.0
Saturation=1.1
MiddleGray=1.25
AdaptiveMaxLuminance=true
HowTo: Engineering the Ultimate HDR Injection
Follow these GameEngineer.net technical steps to ensure your HDR injection is artifact-free:
- The scRGB Priority: In the Special K in-game overlay (
Ctrl + Shift + Backspace), always select scRGB HDR instead of “Native HDR10.” scRGB uses a linear color space ($1.0$ gamma), which is much easier for Special K to tone-map without crushing blacks. - Luminance Clipping: Check your monitor’s peak brightness (e.g., 800 Nits). In the
.ini, setscRGBLuminanceto your Nits divided by 80. For 800 Nits, the value is10.0. This ensures the game doesn’t send “hidden” highlights that your monitor can’t display, which causes “clipping.” - The Alt-Enter Toggle: After enabling HDR in the
.ini, you may need to press Alt + Enter twice to cycle the window mode. This forces Windows to recognize the new Flip Model swapchain required for HDR metadata transmission. - Bypass sRGB Gamma: If the game looks unnaturally dark, find
BypassSRGBGammain the HDR settings and set it totrue. Many older games use a double-gamma curve that conflicts with HDR’s linear output. - Perceptual Boost: If colors feel “thin,” enable Perceptual Boost. This uses an ACES-based algorithm to intelligently saturate colors based on their luminance, making neon lights and fires “pop” significantly more than SDR.
Technical Explanation: 16-bit Floating Point and scRGB
Most SDR games render at 8-bit integer ($2^8 = 256$ levels per channel). When you inject HDR via Special K, you are forcing the Swapchain to RGBA16_Float ($2^{16} = 65,536$ levels).
Mathematically, this allows Special K to take the original 0–255 color values and map them onto a much wider scale without introducing Quantization Errors (banding). By using ToneMapper=1 (ACES Filmic), the engine applies a “S-Curve” to the highlights. Instead of hard-clipping at the monitor’s limit, the brightness tapers off smoothly ($f(x) = \frac{x(ax+b)}{x(cx+d)+e}$), mimicking the way real-world film and high-end digital cameras capture light.