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.
Note: ReShade supports all of Direct3D 9, Direct3D 10, Direct3D 11, Direct3D 12, OpenGL and Vulkan. A computer with Windows 7 SP1, 8.1, 10 or 11 and .NET Framework 4.6.2 or higher installed is required.
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.
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
Features
- Added support for using "BUFFER_COLOR_FORMAT" definition as ReShade FX texture format
- // Can now effectively define textures that are clones of the swap chain back buffer: texture MyTex { Width = BUFFER_WIDTH; Height = BUFFER_HEIGHT; Format = BUFFER_COLOR_FORMAT; }
- (Add-on support) Added "create_device" event for API version upgrades (e.g. to force a game to use Direct3D 9Ex instead of Direct3D 9)
- static bool on_create_device(reshade::api::device_api api, uint32_t &api_version) { if (api == reshade::api::device_api::d3d9) { api_version = 0x9100; // 0x9000 -> 0x9100, upgrade Direct3D 9 to Direct3D 9Ex return true; } return false; } ... reshade::register_event<:addon_event::create_device>;(&on_create_device);
- (Add-on support) Added device API to "create_swapchain" event (callback signature now reads "bool on_create_swapchain(reshade::api::device_api api, reshade::api::swapchain_desc &desc, void *hwnd);"). This requires a rebuild of add-ons using it! But makes swap chain upgrade decisions based on the graphics API much easier.
Bug fixes
- Fixed VR support with recent SteamVR update (and reworked OpenVR hooks)
- Fixed crash in S.T.A.L.K.E.R.: Shadow of Chornobyl - Enhanced Edition
- Fixed crash in Portal RTX and other Vulkan games using multiple queues (reworked present queue synchronization)
- Fixed crash after reloading effect with an editor open showing the assembly of a permutation
- Fixed crash with SPIR-V codegen when encountering error in function declaration
- Fixed crash when effect is using pooled texture with different usage than its usage at initial reload
- Fixed crash on exit with Epic Games overlay
- Fixed crash on exit in WPF applications calling "MS.Win32.UnsafeNativeMethods.GetMessageW"
- Fixed mouse cursor always staying visible in games using DirectInput8 (e.g. Payday 2 and GTA IV)
- Fixed invalid registration as export module when loaded via an ASI loader and named like a wrapper DLL
- Fixed preprocessor definitions not being sorted anymore
- Fixed "Match custom width and height exactly" option in Generic Depth add-on not working
- Fixed depth buffers not being considered when rendered to with indirect draw calls only (e.g. vkQuake)
- Fixed HLSL code generation for discard statement in functions with "void" return type
- Fixed HLSL/GLSL code generation for equally named uniform variables in different namespaces
- Fixed loading of effect permutation potentially saving preset during preset transition
- Fixed "Edit source code" being impossible to click on effects with permutations that are in use
- Fixed loading of DDS files which contain "DDS_HEADER_DXT10"
- Fixed waving vertex shading in Vintage Story applying to objects it should not
- Fixed potentially invalid depth texture being provided to OpenVR runtime
- (Add-on support) Fixed D3D12 static sampler border color conversion
- (Add-on support) Fixed D3D9 render target destruction event being invoked after device destruction (fixes crash on exit with madVR in MPC-HC)
- (Add-on support) Fixed crash when "get_private_data" is called on an object that was already destroyed
Miscellaneous
- Added global config option to limit number of effect runtime instances that can be created
- [INSTALL] MaxEffectRuntimes=1 // 0-N
- Added warning message when preset uses unknown technique
- Added "Apply" button to "Edit global preprocessor definitions" popup
- Added Ctrl + click on adjustment buttons to ignore limits on slider widgets
- Added compile error when there is a technique mismatch between effect permutations
- Added "__RESHADE_PERMUTATION__" definition to indicate when an effect is compiled as a permutation
- Added missing render target output flag to swap chain creation in Space Engineers 2
- Improved performance in OpenXR games which are providing side-by-side image to the runtime
- Changed loading of D3DCompiler DLL to prefer up-to-date system one over local variants
- Changed base path to ASI location when loaded via an ASI loader
- Changed screenshot timestamp to match between before and after images
- Changed preprocessor to allow redefinition of identical preprocessor macros
- Changed mentions of "technique" to "effect" in the user interface for less confusion to normal users
- (Add-on support) Updated imgui to v1.91.9b (add-ons may now use 1.91.9, 1.91.8, 1.90.0-4, 1.89.7 or 1.86)
- (Add-on support) Added resource view creation and destruction events for implicit back buffer render target view in D3D9/OpenGL
- (Add-on support) Added missing format conversion for "D3DFMT_A8L8" and several signed D3D9 texture formats
- (Add-on support) Changed DXGI swap chain color space tracking to use private data
- (Add-on support) Changed D3D12 pipeline creation events to skip missing shader subobjects
- (Add-on support) Optimized D3D12 "device_impl::resolve_gpu_address" performance
- (Add-on support) Removed unnecessary handling of "IDirect3DVolume9" for resource views
Setup tool
- Added option to sort effect package and add-on selection lists in setup tool
- Fixed setup tool still loading some DLLs from the application directory instead of system directory, potentially causing it to appear empty or crash
- Fixed exception when configuration contains invalid search path
- Changed "Skip" button to skip effects and add-ons pages separately