Skip to content

ReShade

Eamonn Rea edited this page Aug 26, 2023 · 30 revisions

(Project Page: ReShade)

(See also Depth3D and Shader-Management.)

NOTE: Vulkan games are NOT supported with ReShade on Linux. If a solution is known please open an issue describing the implementation, or open a PR to implement this. ReShade is also not supported by native Linux games, even those using OpenGL/DXVK Native/Zink. The current solution is to use vkBasalt for Vulkan games, both running through Wine/Proton and running natively on Linux.

You can find more information on the paths where SteamTinkerLaunch downloads and extracts ReShade versions to on the Paths wiki page.

Usage

(in Game Menu or Game Config)

Enabling ReShade

Enable the "ReShade Install" checkbox on the Game Menu (or set INSTALL_RESHADE=1 in the game config file) to automatically install ReShade into the game directory. This is either a folder you can select manually, or SteamTinkerLaunch's best guess as to where the game executable is. The directory chosen here should reflect where the game executable that will load the ReShade DLLs is located.

Once ReShade Install is enabled, you will need to tell SteamTinkerLaunch that you want to use it with the game, as by default the DLLs will be turned off. Enable the "ReShade" checkbox on the Game Menu (or set USERESHADE=1 in the game config file) to start the game with ReShade enabled.

All required ReShade files are downloaded into RESHADESRCDIR, each in a subfolder matching the ReShade version (such as 5.9.1).

A good way to know if ReShade is working is to load up your game and see if it shows the ReShade menu. This is a small menu that typically appears on the top, left, or right side of the screen, displaying the ReShade version and offering some general first-start advice.

Game Architecture

The required architecture is auto-detected from the game executable (or an alternative selected executable), and the matching files are copied from the internal SteamTinkerLaunch ReShade downloads directory (RESHADESRCDIR) into the selected game directory.

DLL Names and Graphics APIs

ReShade works by way of DLL injection. Using either a 32bit of a 64bit DLL, ReShade will inject itself into a game by naming itself after the graphics API that a game uses, such as d3d9.dll for Direct3D 9 games. This means a Direct3D 9 game will load the ReShade DLL and the ReShade code will be injected into the game, allowing it to run. In the case of Wine, this requires a DLL override which SteamTinkerLaunch sets out-of-the-box.

SteamTinkerLaunch will also download and install d3dcompiler_47.dll into the game folder to ensure maximum compatibility with ReShade.

The name of the ReShade DLL in the game files must match thee graphics API that a game is using. Below is a list of Graphics API names and the DLL name which should be used for it:

Graphics API DLL name
Direct3D 9 d3d9.dll
Direct3D 10/11/12 dxgi.dll
Direct3D 11 d3d11.dll
OpenGL opengl32.dll

Despite the DLL name, opengl32.dll should work for both 32bit and 64bit games. It will always be named opengl32.dll though, as that is the name of the 32bit and 64bit OpenGL DLLs on Windows and in the Wine prefix.

SteamTinkerLaunch v14.0 and above give users the option to enter the name of the DLL themselves, in the "ReShade DLL Name" textbox. This has a pre-populated list of DLL names which you can use. The default name is dxgi.dll to maximise compatibility, if the textbox is left blank then dxgi.dll will also be used. However if you are using a Direct3D 9 game, make sure you select d3d9.dll.

This textbox can also accept multiple values, such as d3d9.dll,dxgi.dll. If you do not provide a file extension, SteamTinkerLaunch will append the .dll extension for you.

SteamTinkerLaunch tracks the currently installed DLLs in the game folder with the file ReShade.txt.

Determining the Graphics API.

Refer to the PCGamingWiki ReShade Compatibility List to find out about which Graphics API your game is using, or to the Steam Store Page to find out the minimum graphics API version.

Please keep in mind that some games may have the option to use multiple graphics APIs. Below is a list of some games with multiple rendering APIs to illustrate how care must be taken to properly investigate which graphics APIs a game offers and how care must be taken to choose the correct ReShade DLL name:

  • DOOM 2016 offers an OpenGL and Vulkan API.
  • Hades offers Direct3D 9 (32bit), Direct3D 11, and Vulkan API.
  • Baldur's Gate 3 offers a Direct3D 11 and Vulkan API.

Naming DLLs

You can also enter custom DLL names if you have a need to set a custom one, but please note that you may have to manually set a Wine DLL override to ensure the DLL is picked up by the game.

It may be useful to set a custom DLL name if the default DLL name is already in use by the game, or by a modloader. In other words, it is useful to avoid DLL naming conflicts.

DLL Naming Conflicts

In the event of a DLL naming conflict, SteamTinkerLaunch will back up the offending DLL with the existing name to dll_name.dll.bak. If this causes issues, such as a game DLL being overwritten inadvertently, you should remove the ReShade DLL with the chosen name, and then rename the previous DLL to remove the .bak suffix. This should restore the DLL.

If this DLL somehow got overwritten again, you should be able to restore the original DLL by right clicking your game within Steam -> Properties... -> Installed Files -> Verify Integrity of game files.

Renaming DLLs

When you change the name of the ReShade DLL, the original DLL name will not be removed. So if you choose the name d3d11.dll and it causes your game to crash, it won't be removed when you change the name. This is because it's impossible for SteamTinkerLaunch to know which DLLs were placed by itself, the user, the game, mods, and so on. It is up to the user to remove any DLLs which are causing issues, and to select the ReShade DLL name with care.

However, when DLLs are renamed, the tracked DLLs list in ReShade.txt is updated. So if you originally had d3d11.dll, then removed it from the game files and then also chose a different ReShade DLL name, SteamTinkerLaunch will stop tracking it. This means when disabling ReShade, these previously-selected DLLs which are no longer the selected names will NOT be turned off, so if d3d11.dll was later in use by a mod, there would be no risk of a conflict.

Legacy Behaviour

SteamTinkerLaunch v12.12 and below will copy the ReShade DLL that corresponds with the game architecture (ReShade32.dll or ReShade64.dll) into the same folder as the game executable, and it will always name them dxgi.dll and d3d9.dll in an attempt to cover Direct 3D 9/10/11 games without any intervention from the user. This has been known to cause problems, however, if a game tries to load both of these DLLs and likely due to a game bug will load the incorrect DLL (noted to happen with Tales of Arise in #873 when it tries to load d3d9.dll).

It should be noted that by default, OpenGL games do not work with ReShade in SteamTinkerLaunch v12.12.

ReShade Auto Update

With RESHADEUPDATE being enabled (per game) in the Main Menu, new ReShade Setups are downloaded/extracted automatically. Every ReShade version is also stored in a versioned folder from now on in the local SteamTinkerLaunch downloads directory.

ReShade is updated based on the global ReShade version in the Global Menu, which can also be auto-updated to the latest release version with the Auto-update ReShade checkbox in Global Menu). On each boot of a game using ReShade, the ReShade DLLs with their respective selected names are automatically updated in every game directory.

ReShade-Version-Override

By default, SteamTinkerLaunch has an internal, hardcoded ReShade version. This can be adjusted in the Global Menu, but it may be useful to set a custom ReShade version per-game as well. For example this could work around game conflicts or temporary issues with shaders.

With the ReShade Override checkbox (or RSOVRD=1 in the Game Menu) the ReShade version can be overwritten per game from the Game Menu.

When the ReShade Override checkbox is enabled, it is possible to enter a specific ReShade version, or select it from the dropdown. If an invalid ReShade version is entered, SteamTinkerLaunch will fall back to the latest version it can find.

ReShade_Addon

From ReShade 5.0 and onward, there is an optional "Addon" variation. By default this is not used by SteamTinkerLaunch in any case, but by setting the ReShade override version, it is possible to select this version by appending _Addon to youur entered ReShade version, for example 5.4.2_Addon.

NOTE: Using ReShade Addon WILL trigger a game's Anti-Cheat and should NOT be used for online multiplayer games featuring invasive Anti-Cheat systems.

Advanced Usage

Manual Installation

You can install all ReShade files manually as well. Make sure to rename all files correctly.

You can manually create a ReShade version in the SteamTinkerLaunch ReShade downloads directory. Create a subfolder to contain the ReShade32.dll and ReShade64.dll files, naming this subfolder after a version for the ReShade Version/ReShade Override version textboxes to pick up.

To manually install the ReShade DLLs into a game folder yourself, such as without SteamTinkerLaunch, simply copy either a 32bit or 64bit ReShade DLL (depending on the architecture of your game) and then give it a name corresponding to the graphics API that your game is using (such as d3d9.dll for Direct3D 9 games). To find out the architecture of your game, you can run file /path/to/game.exe and take note of whether it is a PE32 executable (32bit) or a different format (almost always 64bit, unless you have a very odd executable).

Using ReShade and SpecialK together

NOTE: This section of the wiki is out-of-date and has not been re-tested in a long time. Further testing is welcome to confirm this, and/or a PR to fix any issues relating to this which can now be resolved!

SpecialK supports loading ReShade as a plugin, but unfortunately, this leads to a crash (currently). The functionality is already implemented (apart from auto-adding ReShade to the SpecialK ini if enabled), but commented out because it crashes. Edit function setShadDestDir, function useReshade, and function prepareSpecialKReshade if you want to play with it.

Custom Commands

By default, ReShade is not selected to work with custom commands. This can be toggle with the "Use ReShade with Custom Command" checkbox (or set CUSTOMCMDRESHADE=1 in the Game Menu). Then any chosen custom command will have ReShade installed into its game files.

Clone this wiki locally