This is a generic post-processing injector for games and video software. It exposes an automated way to access both frame color and depth information and a custom shader language called ReShade FX to write effects like ambient occlusion, depth of field, color correction and more which work everywhere.
ReShade can optionally load add-ons, DLLs that make use of the ReShade API to extend functionality of both ReShade and/or the application ReShade is being applied to. To get started on how to write your own add-on, check out the API reference.
The ReShade FX shader compiler contained in this repository is standalone, so can be integrated into other projects as well. Simply add all source/effect_*.*
files to your project and use it similar to the fxc example.
You'll need Visual Studio 2017 or higher to build ReShade and Python for the gl3w
dependency.
- Clone this repository including all Git submodules
- Open the Visual Studio solution
- Select either the
32-bit
or64-bit
target platform and build the solution.
This will build ReShade and all dependencies. To build the setup tool, first build theRelease
configuration for both32-bit
and64-bit
targets and only afterwards build theRelease Setup
configuration (does not matter which target is selected then).
A quick overview of what some of the source code files contain:
File | Description |
---|---|
dll_log.cpp | Simple file logger implementation |
dll_main.cpp | Main entry point (and optional test application) |
dll_resources.cpp | Access to DLL resource data (e.g. built-in shaders) |
effect_lexer.cpp | Lexical analyzer for C-like languages |
effect_parser.cpp | Parser for the ReShade FX shader language |
effect_preprocessor.cpp | C-like preprocessor implementation |
hook.cpp | Wrapper around MinHook which tracks associated function pointers |
hook_manager.cpp | Automatic hook installation based on DLL exports |
input.cpp | Keyboard and mouse input management and window message queue hooks |
runtime.cpp | Core ReShade runtime including effect and preset management |
runtime_gui.cpp | Overlay rendering and everything user interface related |
Any contributions to the project are welcomed, it's recommended to use GitHub pull requests.
All source code in this repository is licensed under a BSD 3-clause license.