3D LUTs for Direct3D and OpenGL applications (e.g. games) under Windows (using ReShade)

Wikis > 3D LUTs for Direct3D and OpenGL applications (e.g. games) under Windows (using ReShade)

The ReShade injector can be used with Direct3D (8-11) and OpenGL applications/games under Windows (compatibility list).

DisplayCAL supports generation of compatible 3D LUTs (in PNG format) for use with ReShade.

Following is a brief overview how to get up and running.

Installing ReShade

Download the latest version of ReShade.

  • For version 3.x, the ReShade executable is self-contained and can be used to configure ReShade for each application/game you want to use it with.
  • For version 2.x,  extract the ZIP file. This should result in a folder “ReShade <version>”. Use the “ReShade Mediator” application to configure ReShade for each application/game you want to use it with.

For more information, see the ReShade website. There’s also a discussion & support forum.

Installing DisplayCAL and Argyll CMS

  1. Download DisplayCAL.
  2. Follow the DisplayCAL quickstart guide to set it up.

Option 1: Creating a new profile and 3D LUT

  1. Select the “Video 3D LUT for ReShade (Rec. 709 / 1886)” preset under “Settings”.
  2. On the “Profiling” tab, optionally increase the number of patches with the slider. More patches will yield higher accuracy of the resulting profile and 3D LUT.
  3. If desired, adjust the lookup table size on the “3D LUT” tab. Sizes 16x16x16, 32x32x32 and 64x64x64 are supported.
  4. Click “Calibrate & profile”. Adjust the whitepoint of your display if necessary, then continue on to profiling.
  5. Wait for measurements and calculations to finish.

Option 2: Create a 3D LUT from an existing profile

  1. Select the profile in DisplayCAL under “Settings”. If the profile was initially created together with a 3D LUT, the respective tab should already be selectable. If not, it will be grayed out. In the latter case, you can enable it in the “Options” menu.
  2. Go to the “3D LUT” tab and select “ReShade” under “3D LUT file format”. If desired, adjust the lookup table size. Sizes 16x16x16, 32x32x32 and 64x64x64 are supported.
  3. If “Create 3D LUT after profiling” is checked, un-check it. The button at the bottom of the window will change to “Create 3D LUT…”.
  4. Click “Create 3D LUT…” and wait for the process to finish.

Installing the 3D LUT

A window should pop up asking you to install the 3D LUT. Click “Install…”.

  • If you are using ReShade 2.x, choose your “ReShade <version>” folder.
  • If you are using ReShade 3.x, choose the folder of the application/game for which you installed ReShade.

Then click “Select folder”. For ReShade 2.x, the 3D LUT is now active by default. For ReShade 3.x, delete the ReShade.fx in your application/game folder (if it exists from a prior version), and use the in-game ReShade configuration menu or the default hotkey (“HOME”) to enable the 3D LUT.

A note on 1D calibration

The ReShade preset is set up to not do 1D calibration, but if you create a ReShade 3D LUT from an existing profile that incorporates 1D calibration as well, or if you have a display profile that incorporates 1D calibration, there are some extra caveats to take care of, otherwise you can skip the following few paragraphs and jump straight to “3D LUT usage” below.

To avoid having calibration applied twice (once through the video card gamma tables and once through the ReShade 3D LUT), you either need to reset the video card gamma tables during ReShade usage, or create a 3D LUT without calibration applied. The former (resetting video card gamma tables during ReShade use, restoring them afterwards) is the recommended and most straightforward way of ensuring the correct calibration state, so I’ll only describe the steps necessary to make it work.

You can use the DisplayCAL (3.1.7 or later) profile loader and add an exception for each game/application that you’re going to use with ReShade. Right-click the profile loader icon to bring up its menu and select “Exceptions…”. Click “Add…” and browse for the game/application executable. Once added, click the gray circle arrow next to the executable name. It should turn orange-red, indicating that when the executable is detected, the video card gamma tables will be automatically reset, and automatically restored after the game/application has been closed. Click “OK” to confirm your changes. The ReShade 3D LUT needs to have the calibration applied (which is the default, so unless you specifically changed something there’s no additional steps to take).

While this procedure requires (minimal) manual intervention (setting the calibration state with the profile loader), it is the most reliable way to ensure the correct calibration state.
The alternative way of creating a 3D LUT with calibration not applied and relying on the profile loader to keep the calibration loaded has the major drawback that Direct3D applications can still override the video card gamma tables “behind your back” without an easy way to verify it, because the Direct3D APIs allow for different video card gamma tables in desktop/windowed mode and fullscreen mode (and it is not possible to influence the fullscreen video card gamma tables from outside the specific Direct3D application unless using methods such as DLL injection to override the necessary Direct3D API calls, and while there are tools like ColorClutch to facilitate this, it can be cumbersome to set up).

3D LUT Usage

When you run the application/game, you should see a ReShade initialization message in the top left corner. A message “Color Look Up Table Shader 1.0” should appear in the center of the screen, and you can toggle the 3D LUT with the “HOME” key (edit ColorLookupTable.fx to change this key).