In these last few years, the postprocessing injector ReShade has transformed PC gaming by allowing users to seamlessly customize and enhance the graphics of pretty much any game.
A few hours ago, a new major release of ReShade, version 6.0, was made available through the official website. These big releases are few and far between (for example, version 4.3 landed in May 2019, while version 5.0 was launched nearly two years ago), but they bring entirely new features that shader developers can then exploit.
ReShade 6.0 is no exception. Among other things, it introduces support and special handling for RTX Remix (due to launch in Open Beta in a week from today), and most interestingly, it adds APIs for ray tracing and mesh shading.
Judging from the changelog, it sounds like shader developers might be able to utilize the hardware support for these technologies in unprecedented ways. For example, ray tracing was famously available through MartyMcFly’s RTGI and other similar techniques, such as NiceGuy’s Complete RT, but none of them could tap into the hardware acceleration available in GPUs like GeForce RTX or AMD’s Radeon RX 6000 and 7000 Series. If this assumption is correct, ReShade 6.0 might be a true game-changer. I’ll try to contact main developer crosire as soon as possible to clarify. In the meantime, here’s the full lowdown on this new build:
ReShade 6.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=<version>” for the Generic Depth add-on)