As featured in:

Imagine your favorite game with ambient occlusion, real depth of field effects, color correction and more ... ReShade exposes an automated and generic way to access both frame color and depth information (latter is automatically disabled during multiplayer to prevent exploitation) and all the tools to make it happen.

The possibilities are endless! Add advanced depth-edge-detection-driven SMAA antialiasing, screen space ambient occlusion, depth of field effects, chromatic aberration, dynamic film grain, automatic saturation and color correction, cross processing, multi-pass blurring ... you name it.

ReShade features its very own shading language and transcompiler, called ReShade FX. The syntax is based on HLSL, adding useful features designed for developing post-processing-effects: Define and use textures right from the shader code, render to them, change renderstates, retrieve color and depth data, request custom values like timers or key states, ...

And that's not it. Write your shaders just once, they'll work everywhere, regardless of your target being Direct3D or OpenGL: ReShade takes care of compiling them to the right shader model and language.

Open Source

As of January 1st 2017, ReShade is open sourced under the terms and conditions of the BSD 3-clause license! You can help development with your own contributions via the official GitHub repository.

Note:

ReShade supports all of Direct3D 9, Direct3D 10, Direct3D 11, Direct3D 12 and OpenGL.
A computer with Windows 7 SP1, 8.1 or 10 and the DirectX end-user runtime installed is required.

Use preset files (*.ini) that can be created from ReShade's in-game user interface to share your configurations.
ReShade loads all presets placed in the game directory automatically (both *.ini and *.txt).
Do NOT share the binaries or shader files. Link users to this website instead.

Quick start: Run setup tool > Follow instructions > Close setup tool > Start game > ... > Profit | Troubleshooting

What's New:

  • Added individual effect file selection dialog to setup tool again
  • Added help text to setup tool dialogs to explain them to new users
  • Added option to relax modifier state checks for shortcuts
  • See reshade.me/forum/troubleshooting/6358-re...r-with-modifier-keys
  • Fixed corrupted image in Vulkan with effects that read and write to custom render targets
  • Fixed stencil data looking corrupted in Vulkan
  • Fixed input/output parameter structure flattening in SPIR-V code generation
  • Fixed crash in AMD driver bug workaround
  • Fixed "ReShadeGUI.ini" not always being created in the same directory as the "ReShade.ini" configuration file
  • Fixed preprocessor errors not showing up in log
  • Fixed macros used inside "#include" statement not working in included file
  • Changed setup tool texture directory search to include "jpg" and "jpeg" extensions
  • Changed "Cancel" button caption in setup tool effect package selection to "Skip"
  • Changed "Standard effects" package to be a required package that cannot be deselected (since it contains ReShade.fxh which is used by many effects)

4.6

  • Reworked effect selection in setup tool to a list of effect packages instead of individual files
  • Improved API detection in setup tool (and automatic selection for a known list of games)
  • Improved performance for effects with many passes that write to custom render targets
  • Improved D3D12 resource state management
  • Improved line information for errors in evaluated preprocessor macros
  • Added setup tool self-verfication at startup, which will show an error if the archive is corrupted immediately
  • Added default log file to help with troubleshooting
  • Added option to skip application scanning in setup tool by pressing "Alt" button while clicking on "Select ..."
  • Added Vulkan memory allocator for improved memory management
  • Added error message to log when DXGI encounters a device loss
  • Added parser error when encountering a interpolation qualifier mismatch between vertex and pixel shaders
  • Added parser error when encountering a vertex or pixel shader parameter without semantics
  • Added preprocessor error when encountering an unterminated string literal
  • Added limit to the number of compile error messages shown
  • Added missing license statements to about page in UI
  • Added configuration file fall back for technique sorting (reads "TechniqueSorting" from "GENERAL" section if preset does not define it)
  • Added FreePIE IO support: uniform float3 io_data[2] < source = "freepie"; index = 0; >; // io_data[0].xyz = yaw, pitch, roll // io_data[1].xyz = position
  • Added image format list to Vulkan image creation for improved performance on some hardware
  • Added shortcut keys for code editor search and replace
  • Added code editor option to search and replace case insensitive
  • Added support for leaving code editor focus with escape key
  • Added support for "#" comments in INI files
  • Added Vulkan API version to renderer ID (__RENDERER__)
  • Added built-in "__FILE_NAME__" and "__FILE_STEM__" preprocessor macros
  • Added more enum names to HRESULT values in log messages
  • Added support to render point and line primitives from effects: pass { PrimitiveTopology = POINTLIST; // LINELIST, LINESTRIP, TRIANGLELIST, TRIANGLESTRIP VertexCount = 10; }
  • Added special uniform to check if UI is open: uniform bool is_open < source = "overlay_open"; >;
  • Changed setup tool to set buffer detection settings based on compatibility list
  • Change "application" to "game" in setup tool descriptions
  • Changed Vulkan depth buffer detection to use same heuristic as D3D9/OpenGL
  • Changed default of "RESHADE_DEPTH_INPUT_IS_REVERSED" to 0 again
  • Changed uniform boolean representation to use "1" and "0" instead of "-1" and "0"
  • Changed effect tabs in UI variable list to stay in place when scrolling
  • Changed UI screenshot creation to only attempt to create it if UI is actually open
  • Changed effect preprocessor to only add preprocessor definitions to UI if their declaration is active
  • Changed reload behavior to open the last edited code file again
  • Changed code editor colorization to colorize a few additional lines above and below an edit for better multi-line comment handling
  • Fixed keyboard navigation in setup tool
  • Fixed setup tool crash when trying to change an empty preset path
  • Fixed setup tool exit button not being shown while asking about existing installation
  • Fixed text rendering in Spellforce 3 and image turning too dark sometimes
  • Fixed missing UI in old OpenGL games using the "glVertexPointer" API (e.g. Call of Duty)
  • Fixed error when launching Metro Exodus in D3D12 (because of missing "DXGIGetDebugInterface1" export)
  • Fixed crash on systems where render GPU is not attached to the output display (e.g. on laptops with Optimus etc.) (thanks to sherief)
  • Fixed crash when switching fullscreen mode when render GPU is not the display GPU
  • Fixed crash in WineD3D and OpenGL games
  • Fixed crash in Valkyria Chronicles when changing depth buffer detection settings
  • Fixed crash in Call of Duty: Modern Warfare
  • Fixed crash in D3D12 device creation when interface is not supported
  • Fixed crash and "ID3D11Device::CreateShaderResourceView" errors in D3D10/11 games using MSAA or array depth stencil resources
  • Fixed crash in effect preprocessor when input file is not terminated with a new line
  • Fixed crash in D3D12 if runtime is reset before initialization
  • Fixed crash in Resident Evil 3
  • Fixed potential crash in D3D12 when changing resolution
  • Fixed device loss in D3D12 in games creating depth-stencil resources with "ID3D12Device::CreateReservedResource"
  • Fixed potential device loss in D3D12/Vulkan when switching UI tabs
  • Fixed vertex shader usage of textures in D3D12
  • Fixed D3D12 screenshots failing for RGB10A2 back buffer format
  • Fixed D3D12 depth binding not being updated sometimes without reloading (e.g. in Strange Brigade)
  • Fixed "bufready_depth" uniform not working in D3D9/10/11
  • Fixed spacing in UI for depth buffer clears
  • Fixed D3D9/10/11 textures not being cleared to zero when not used as render target
  • Fixed duplicated error log messages if preprocessing step failed during effect compilation
  • Fixed FPS overlay showing cut off at bottom of screen if text scale is larger than one
  • Fixed GLSL code generation for integer varying variables
  • Fixed locations for varyings with custom semantics in GLSL code generation
  • Fixed GLSL and SPIR-V code generation for semantics with numbers other than "TEXCOORD"
  • Fixed GLSL and SPIR-V code generation for uniform arrays
  • Fixed function name in pass state validation error messages
  • Fixed log message for special sample quality in swapchain description
  • Fixed key down state being reset even if key is actually still held down
  • Fixed code editor replace all not replacing all occurances in a document
  • Fixed error handling in D3D10/11 runtime initialization
  • Fixed reloading after a failed preprocessor definition change causing the effect to fail compiling
  • Fixed Vulkan driver version displayed in the UI for NVIDIA drivers
  • Fixed D3D11 immediate context interface version not being upgraded in "ID3D11Device::GetImmediateContext1/2" calls
  • Fixed UI screenshot being taken of a different frame than the effect screenshot
  • Fixed render artifacts in some D3D9 games because of INTZ usage that could not be disabled with high network activity
  • Fixed potential issue with "CreateDXGIFactory2" writing to non-existent VTable entries
  • Fixed line information for string literals that span multiple lines
  • Fixed "#ifdef" and "#ifndef" not responding to built-in preprocessor defines
  • Fixed artifacts in Vulkan applications presenting on a different queue than the rendering one
  • Fixed OpenGL resources leaking when window was destroyed before calling "wglDeleteContext"
  • Updated Vulkan layer API version to 1.2
  • Removed unnecessary barriers in D3D12 depth buffer detection
  • Removed support for point size builtin semantic (since it is not supported in D3D11)