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 environment variable completion for path widgets (can e.g. use "%environment_variable%" in screenshot paths now, which is resolved to the value of "environment_variable")
  • Added Polish translation (translated by ChaoLaChao)
  • Added Arabic translation (translated by 2z)
  • (Add-on support) Added render pass flags (see "reshade::api::render_pass_flags")
  • (Add-on support) Added descriptor range flags (see "reshade::api::pipeline_layout_param::descriptor_table_with_flags" and "reshade::api::descriptor_range_flags")
  • (Add-on support) Added color space to swap chain description, to allow overriding in "create_swapchain" event callback
  • (Add-on support) Changed "begin_render_pass" event callback signature to allow skipping the original call (which makes it possible to call "cmd_list->begin_render_pass" inside the callback to change behavior)

Bug fixes

  • Fixed crash when multiple threads accessed ws2_32 hooks (thread-safe local static initialization was disabled)
  • Fixed crash with DLSS in newer vkd3d versions (added support for its "ID3D12DeviceExt2" interface)
  • Fixed Vulkan "copy_texture_region" not handling sRGB textures correctly (caused dark image in Vulkan games)
  • Fixed nothing showing up in DOOM Eternal with present from compute disabled
  • Fixed flickering in DOOM 2016 on AMD
  • Fixed descriptor table leak when effect creation failed
  • Fixed image with checkerboard drawing overhead on statistics page when image draws beyond window rectangle
  • Fixed incorrect slice offset calculation for volume textures in DDS loader
  • Fixed possible integer overflow in DDS loader causing out-of-bounds writes
  • Fixed possible stack buffer overflow when preprocessor expression is too long
  • Fixed font size showing up as zero by default
  • Fixed gamepad input not working sometimes despite being enabled
  • Fixed crash when parsing floating-point literals in ReShade FX and game enabled floating-point exceptions
  • (Add-on support) Fixed immutable resource flag conversion
  • (Add-on support) Fixed OpenGL texture upload with r8g8b8x8 formats
  • (Add-on support) Fixed RGB10A2 pixel format detection in OpenGL
  • (Add-on support) Fixed z range in Vulkan copy/blit operations and dynamic buffer descriptor updates
  • (Add-on support) Fixed invalid framebuffer attachment being returned in OpenGL when texture object was deleted
  • (Add-on support) Fixed D3D12 structured buffer view creation
  • (Add-on support) Fixed D3D12 pipeline creation with mesh shaders
  • (Add-on support) Fixed Vulkan descriptor set layout object leak when pipeline layout creation was overriden by an add-on

Miscellaneous

  • Added support for "ID3D12Device15"
  • Added "DXGIDisableVBlankVirtualization" export
  • Added header row to global preprocessor definitions list
  • Added "Choose last clear operation with high number of draw calls" option even when there are multiple depth buffer items
  • Moved window transparency fix into an add-on ("Fix window transparency"), Ryujinx users need to install this to fix some effects becoming transparent
  • Simplified texture memory size calculation
  • Made DXGI adapter enumeration log messages verbose
  • Changed Vulkan render pass creation to exclude unused attachments
  • Changed D3D12 pipeline library hook installation to be skipped when not needed
  • Changed minimum resolution for effect runtime initialization to 160x120
  • Changed effect error tooltips to only show file names instead of full path
  • (Add-on support) Added "gpu_upload" memory heap mapping to CPU-accessible GPU memory
  • (Add-on support) Added "dynamic_state::input_element_stride"
  • (Add-on support) Renamed memory heap enumeration values
  • (Add-on support) Renamed level and layer count members of resource view description
  • (Add-on support) Changed config API to reload effect runtime configuration after it was modified

Setup tool

  • Added detection for small default stack size in game executable
  • Always add default "[PROXY]" section to config file