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

  • Added "screenshot" uniform source which is true while a screenshot is being taken
  • Changed depth buffer detection to skip depth buffers that were not used for at least a frame
  • Changed depth buffer list in overlay to keep showing unused items for a few frames and sort by texture dimensions
  • Changed loading of preset to sort techniques alphabetically when not otherwise specified in the preset
  • Fixed crash on startup in Vulkan games with signed build of ReShade
  • Fixed crash when exiting Yuzu when using OpenGL
  • Fixed crash in Uncharted: Legacy of Thieves Collection
  • Fixed crash when "vkDestroy[...]" is called with a "VK_NULL_HANDLE" object (e.g. done by VKD3D)
  • Fixed previous depth-stencil shader resource view not being unbound when creation of new one failed
  • Fixed missing resource view description for some render target/depth-stencil views in D3D12
  • Removed directory from add-on file name in add-on settings when it matches that of the add-on search path

Features:

  • Added support for navigating the overlay using a XBox controller (to open/close press left + right shoulder buttons and the start button simultaneously)
  • This is only active when "[INPUT] GamepadNavigation=1" is set in ReShade.ini!
  • Controls are as follows: www.dearimgui.org/controls_sheets/imgui%...%20v6%20-%20Xbox.png

Bug fixes:

  • Fixed hooking in Evoland and other D3D10/11 games on Windows 7
  • Fixed crash with DXVK 2.0 (or other Vulkan games using the "VK_EXT_graphics_pipeline_library" extension)
  • Fixed crash on startup in Toontown Rewritten
  • Fixed tree and cloud rendering artifacts in Minecraft
  • Fixed bad performance while the "Add-ons" window in the overlay is visible
  • Fixed ReShade rendering applied multiple times to the same frame in games using "D3DPRESENT_DONOTWAIT" or "DXGI_PRESENT_DO_NOT_WAIT" present flag
  • Fixed modifying resource description in "create_resource" event having no effect in D3D10/11
  • Fixed "swapchain::get_current_back_buffer_index()" result being out of date in "present" event in D3D12/Vulkan
  • Fixed "command_list::copy_texture_region" not always performing blitting in Vulkan when texture dimensions do not match
  • Fixed "effect_runtime::get_texture_binding" not working for textures with a semantic
  • Fixed crash in Vulkan when destroying shared resource
  • Fixed crash when binding nullptr constant buffer in D3D11
  • Fixed nullptr descriptor heap being bound sometimes after D3D12 mipmap generation
  • Fixed format conversion for formats from "GL_NV_depth_buffer_float" OpenGL extension and "GL_ALPHA", "GL_LUMINANCE", "GL_INTENSITY" and "GL_LUMINANCE_ALPHA"

Miscellaneous:

  • Added "vkAcquireNextImageKHR" hook to update back buffer index in Vulkan
  • Added support for imgui command user callbacks
  • Added support for "command_list::copy_buffer_to_texture()" from buffer resource to back buffer in OpenGL (compatibility OpenGL contexts only)
  • Added support for push descriptors with multiple descriptor ranges (see "pipeline_layout_param_type::push_descriptors_ranges")
  • Added support for creating multisampled textures in OpenGL
  • Added "bind_*" events for D3D10/11/12 "ClearState" command
  • Added "push_descriptors" event for "ID3D12GraphicsCommandList::Set(Compute/Graphics)Root(ShaderResource/UnorderedAccess)View"
  • Added "bind_descriptor_sets" event for "ID3D12GraphicsCommandList::Set(Compute/Graphics)RootSignature"
  • Improved D3D12/Vulkan barrier access to "resource_usage" enum conversion
  • Changed preset saving to skip "TechniqueSorting" key when it is equivalent to the "Techniques" key
  • Removed automatic D3D12 descriptor state backup and restore in "render_effects" and "render_technique" (this is better done properly inside add-ons using these)