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

  • Updated imgui to 1.90.1 (add-ons may now use 1.90.1, 1.90, 1.89.7 or 1.86)
  • Fixed localization on Windows 7
  • Fixed rendering artifacts in Company of Heroes
  • Fixed rendering artifacts in Call of Duty: United Offensive
  • Fixed crash if statistics window is resized to zero width
  • Fixed potential crash on exit in D3D12/Vulkan when no effects are loaded
  • Fixed potential crash on exit in D3D9 due to access to destroyed depth-stencil surface object
  • Fixed tutorial progress not being recognized when it cannot be read from global configuration
  • Fixed effects not being updated after a color space change in D3D11/12
  • Fixed some issues with HDR overlay
  • Fixed OpenGL framebuffer cache invalidation (fixes ReShade only showing up in a small portion of the screen in some emulators, like Citra, Ryujinx, Yuzu)
  • Fixed "Failed to close immediate command list" error in D3D12 games using MSAA (e.g. World of Warcraft) when driver does not support depth-stencil resolve
  • Changed OpenGL effect runtime management to defer creation to first present call (avoids creation of many ReShadeX.ini for instances that are never actually used)
  • Changed D3D12 depth-stencil resolve to prefer average filtering over min/max
  • Changed "command_list::bind_descriptor_tables" implementation in D3D12 to force descriptor heap and root signature update when there are no tables (to allow add-ons to reset those in case they were changed without ReShade knowing)
  • Changed setup tool to add "ALL_APPLICATION_PACKAGES" SID to OpenXR layer installation directory
  • Changed setup tool to only enable gamepad input by default in cases where keyboard and mouse input is known to not work
  • Disabled "command_queue::wait_idle" implementation in D3D9/10/11 again for now

Reshade 6.0.0

Features:

  • Added localization (currently with translations for Bulgarian, English, French, German, Japanese, Simplified Chinese)
  • Added OpenXR support
  • Added support for resolving MSAA depth buffers in D3D9 (using RESZ), D3D12, OpenGL and Vulkan (when supported by the driver)
  • Added support for CUBE LUT files as texture source
  • Added API to manually manage ReShade effect runtime instances when graphics hooks are disabled ("ReShadeCreateEffectRuntime", "ReShadeDestroyEffectRuntime" and "ReShadeUpdateAndPresentEffectRuntime" DLL exports)
  • SpecialK e.g. uses this so that one can inject SpecialK late into an application and have it load and manage ReShade, instead of requiring ReShade to hook at application launch
  • Added fence synchronization add-on API ("device::create_fence", "command_queue::signal", "comand_queue::wait", ...)
  • Added color space add-on API ("swapchain::check_color_space_support", "swapchain::get_color_space", "effect_runtime::set_color_space" , ...)
  • Added ray tracing add-on API and events ("command_list::build_acceleration_structure", "command_list::dispatch_rays", ...)
  • Added mesh shader add-on API and events ("command_list::dispatch_mesh", ...)
  • Added "device::get_property" add-on API to query device information, "command_queue::get_timestamp_frequency" and more
  • Added various functions to effect runtime add-on API ("effect_runtime::open_overlay", "effect_runtime::reset_uniform_value", ...)
  • Added "addon_event::reshade_overlay_uniform_variable" and "addon_event::reshade_overlay_technique" events allowing customization of the widgets used to show uniform variables or techniques in the overlay
  • Added built-in "__FILE_NAME_HASH__" and "__FILE_STEM_HASH__" preprocessor macros
  • Added "f16tof32" and "f32tof16" intrinsics to ReShade FX
  • Added "tex1Dgrad", "tex2Dgrad" and "tex3Dgrad" intrinsics to ReShade FX
  • Added "noedit", "noreset" and "nosave" variable annotations and forced loading of "*.addonfx" effect files
  • Added "ui_category_toggle" variable annotation to toggle visibility of a variable category based on the uniform value
  • Added loaded add-on names to preprocessor definitions (e.g. "ADDON_GENERIC_DEPTH=" for the Generic Depth add-on)

Bug fixes:

  • Fixed crash in Resident Evil 3 and other multi-threaded D3D11 games
  • Fixed multisampled resource creation in OpenGL
  • Fixed OpenGL context management to properly handle multiple windows (fixes infinite reloading with Citra's "Separate Windows" layout)
  • Fixed some OpenGL errors with rectangle and multisample textures
  • Fixed video playback issues in Unity engine games
  • Fixed depth buffer detection in Immortals of Aveum
  • Fixed "command_list::bind_descriptor_tables" not setting all descriptor heaps used by applications in D3D12
  • Fixed "addon_event::bind_descriptor_tables" event not being called when D3D12 root signature is changed
  • Fixed implicit back buffer resource creation when "effect_runtime::render_effects/render_technique" is called with a typeless resource
  • Fixed crash when graphics hooks are disabled
  • Fixed crash when uploading 3D texture data in D3D9
  • Fixed crash in built-in Generic Depth add-on in multi-threaded OpenGL applications
  • Fixed resource events for "GL_TEXTURE_BUFFER" buffers
  • Fixed Vulkan validation error when swap chain was created with sRGB image format
  • Fixed VR swap chain creating incompatible resources when format is typeless and has no sRGB variant
  • Fixed variable editor categories expanding upon resize of the overlay window
  • Fixed code editor save button mistakenly showing up for instances showing generated code
  • Fixed item grouping of list widgets
  • Fixed new preset popup closing when backspace button is pressed
  • Fixed scrolling in add-ons window
  • Fixed relative paths with ".\.\" or more dots being written to the config when the target file does not exist

Miscellaneous:

  • Updated imgui to 1.90 (add-ons may now use 1.90, 1.89.7 or 1.86)
  • Added additional depth buffer filter heuristic that only considers those matching the resolutione exactly
  • Added coloring to depth buffer list indicating which buffers are candidates for selection based on the configured heuristics
  • Added texture upload support for 32-bit texture formats (e.g. used for CUBE or HDR files)
  • Added proper implementation for "command_queue::wait_idle" in D3D9/10/11
  • Added support for "countbits", "reversebits", "firstbitlow" and "firstbithigh" intrinsics under D3D9 and 10 using emulated implementation
  • Added effect compile error when attempting to use texture with semantic as a render target (these are always read-only)
  • Added UTF-8 support to code editor
  • Added button to open preset folder in explorer next to preset selector
  • Added button to open log folder in explorer to log page
  • Added button to open base folder in explorer to settings page
  • Added note on what to do when add-ons were disabled due to network activity
  • Clarified log message for add-on load failure
  • Improved queue synchronization in Vulkan
  • Changed effect runtime creation to avoid allocating any resources when disabled via "[GENERAL] Disable=1" in the config and made them independent from swap chain instances
  • Changed typeless 16-bit format behavior in OpenGL to default to floating-point format
  • Changed D3D10 and D3D11 barrier implementation to only unbind resources passed to the barrier command, rather than all
  • Changed configuration file name selection to better distinguish between VR and non-VR effect runtime instances (ReShadeX.ini and ReShadeVRX.ini)
  • Changed alternative log file name to "ReShade.logX", rather than "ReShadeX.log"
  • Changed tutorial progress setting location to global config file (so that tutorial progress is shared for all effect runtime instances)
  • Changed font scaling to not get disabled after tutorial finished (instead added a message overlay window while Ctrl + mouse wheel is pressed to inform users on what is happening)
  • Changed preset browser popup to have a minimum width
  • Changed tab view of variable editor to scroll tabs instead of downsizing them
  • Removed toggle key annotations for techniques
  • Removed "[APP] EnableTransparency" config option
  • Renamed "[INSTALL] EnableLogging" config option to "[INSTALL] Logging"
  • Renamed "[SCREENSHOT] PostSaveCommandNoWindow" config option to "[SCREENSHOT] PostSaveCommandHideWindow"
  • Removed logging of full application command-line (since it can contain sensitive information)

Setup tool:

  • Added OpenXR layer registration
  • Added check for existing effect files (will now show an error instead of creating duplicates)
  • Added add-on selection page
  • Added detection and special handling for games modded with NVIDIA RTX Remix
  • Merged preset and effect packages and effect files selection into a single page
  • Fixed effect package toggle and renamed radio buttons on the uninstall page
  • Fixed crash when encountering executables without a file name before the extension
  • Fixed existing relative preset path not being resolved correctly
  • Fixed app title when no file description exists
  • Fixed uninstall failing when invoked through the command-line
  • Changed unhandled exception handling to show error instead of crashing
  • Changed uninstallation to remove all effect files found in local search paths