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
ReShade 6.4.1
- Added names of uniform variables that are different in effect permutation to error log
- Fixed overlay alpha lowering with every effect reload
- Fixed frequent filesystem queries while overlay is open
- Fixed broken rendering in Euro Truck Simulator 2 when entering Convoy game mode
- Fixed mouse cursor position not being updated when input should be passed through
- Fixed mouse cursor position blocking in various games (e.g. Hogwarts Legacy, Cube 2 Sauerbraten, ...)
- Fixed camera resetting when opening overlay in RoadCraft
- (Add-on support) Improved imgui draw list emulation performance for older imgui versions
- (Add-on support) Fixed unnecessary effect permutation being created when "effect_runtime::render_effects" is called with back buffer target (improves SpecialK compatibility)
- (Add-on support) Fixed missing path canonicalization in "effect_runtime::export_current_preset"
- Added update check to setup tool
- Added explicit setup status message while downloading compatibility information
ReShade 6.4.0
Features
- Added input blocking in games using "Get*Key*State", "GetRawInputBuffer", Windows hooks or DirectInput 8 for input
- Added basic HDR10/scRGB sreenshot support using HDR PNG (thanks to Kaldaien)
- Added option to Generic Depth add-on to change draw stats heuristic
- Added button widget for boolean uniform variables (set to true for one frame after pressing the button)
- uniform bool my_value < source = "button"; >;
- Added support for 4-component integer texture formats to ReShade FX
- texture my_tex { Format = RGBA32I; /* or RGBA32U */ } sampler
my_sampler { Texture = my_tex; } - (Add-on support) Added effect permutation creation for different render target dimensions and formats (a single effect runtime instance can now render to different render targets without constantly having to reload)
- (Add-on support) Added "command_list::query_acceleration_structures" and matching event
- (Add-on support) Added "swapchain_desc::sync_interval" to override v-sync state via the "create_swapchain" event
- (Add-on support) Added "effect_runtime::export_current_preset()" to export current preset to another path
- (Add-on support) Added "resize" argument to "init_swapchain" and "destroy_swapchain" events
Bug fixes
- Fixed Need for Speed: Unbound failing to start
- Fixed screen turning yellow in Penumbra: Overture
- Fixed lines of exactly 512 characters in INI files rolling over to the next line causing data loss
- Fixed duplicated effect definitions when loading from cache
- Fixed technique annotations getting lost on effect reload
- Fixed reset buttons for preprocessor definitions
- Fixed crash after parsing ReShade FX syntax error within namespace
- Fixed shader compile error in D3D9 when pixel size of texture with semantic is referenced
- Fixed ReShade FX texture format verification incorrectly triggering on external textures
- Fixed possible deadlock in Path of Exile 2
- Fixed crash when presentation queue fence creation failed
- Fixed errors with present from compute in Indiana Jones and the Great Circle
- Fixed delayed export hooks being installed as function hooks mistakenly when export module is loaded early (iRacing)
- Fixed incorrect entry point for acceleration structure copying being loaded in Vulkan
- Fixed missing keyboard and mouse messages in Wizardry 8
- Fixed "vkGetPhysicalDeviceToolPropertiesEXT" potentially causing a hang in case of a downstream error
- (Add-on support) Fixed duplicated "init_pipeline" event calls in D3D12
- (Add-on support) Fixed descriptor table handle offsets for "ID3D12Device::CopyDescriptors" events
- (Add-on support) Fixed D3D12 ray tracing pipeline creation skipping over DXIL modules with renamed exports
- (Add-on support) Fixed memory leak when pipeline layout creation fails in D3D12
- (Add-on support) Fixed buffer offset in resource view description during D3D12 "addon_event::init_resource_view" event for acceleration structures
- (Add-on support) Fixed "ADDON_*" definitions being added for disabled add-ons
- (Add-on support) Fixed "clear_depth_stencil_view" event being called by "glClear" even if there is no depth-stencil view bound
- (Add-on support) Fixed OpenGL mipmap generation for some texture formats
Miscellaneous:
- Added "ddraw.dll" as an alternative way to load ReShade (useful in Wizardry 8, since it is loaded before input hooks are created)
- Added macro to include "Before", "After" or "Overlay" term in screenshot file path
- Added batch, powershell and python scripts as screenshot post-command options
- Added "vkGetPhysicalDeviceToolProperties" implementation (Vulkan 1.3 core equivalent to VK_EXT_tooling_info extension)
- Improved French localization
- Changed DXGI factory creation to always upgrade to the highest available interface version
- Changed HLSL code generation to add "u" suffix to unsigned integer literals
- Replaced some buttons opening websites with text hyperlinks
- Fixed unintentional hooking of layered DXGI swapchain created by driver in OpenGL
- Fixed D3D11 warnings about SRV state being reset to zero after binding as UAV
- Removed "0x" prefix from addresses in log
- (Add-on support) Updated imgui to v1.91.8 (add-ons may now use 1.91.8, 1.90.0-4, 1.89.7 or 1.86)
- (Add-on support) Added support for disabling add-ons by file name only
- (Add-on support) Added 3-component texture formats (only really supported in OpenGL)
- (Add-on support) Add support for zero pipeline handle to unbind OpenGL program and vertex array
- (Add-on support) Added workaround for local root signature override and empty D3D12 ray tracing pipeline creation
- (Add-on support) Added support for partial render target view binding in OpenGL
- (Add-on support) Improved object destruction tracking in D3D10/11/12 using "ID3DDestructionNotifier"
- (Add-on support) Changed "*.addonfx" effects to be able to run even when effects are disabled globally
- (Add-on support) Changed collapsed state in add-on list to persist between launches
- (Add-on support) Changed subresource box member types from signed to unsigned
- (Add-on support) Changed private data lookup from linear search to hash table
- (Add-on support) Changed OpenGL program creation to not be altered when relevant add-on events are not registered
- (Add-on support) Changed "device::update_buffer_region" and "device::update_texture_region" to silently ignore nullptr as data
Setup tool
- Added flag to compatibility list to prevent installation to games where ReShade is banned
- Added protection against installing to the Windows directory
- Changed default of effect files list in setup tool to be unselected
- Changed setup tool to write relative preset path to config file
- Fixed scrolling of effect package list when expanded
- Fixed DLL loading errors when system DLLs like dbghelp.dll were present next to the setup executable