Added "[APP] ForceDefaultRefreshRate" global config option
Added error message to overlay when there were errors loading some add-ons
Added optional add-on initialization entry points: Add-ons can now export a "AddonInit" and/or "AddonUninit" function, which ReShade will call after loading/before unloading, to allow for more complicated code than valid inside DLLMain
Added preprocessor support for variadic macros
Added preprocessor support for backslash at end of line to skip to the next
Added error tooltip to file list in technique context menu
Added error coloring to file list in technique context menu for effects that failed to compile
Added option for stats overlays (clock, FPS, frametime) to only show while main overlay is open (filled out checkbox)
Added global alpha support in VR and increased overlay window resolution
Changed technique search in overlay to include effect file name in filtering
Changed technique ordering to keep the declaration order specified within an effect file
Changed preprocessor to concatenate in macros without expanding arguments (to follow behavior of the C preprocessor)
Bug fixes:
Fixed crash with DLSS 3
Fixed crash in Crusader Kings II
Fixed crash in Phantasy Star Online 2
Fixed duplicated input in some games (e.g. Payday 2)
Fixed ReShade not showing up in some D3D11 VR games
Fixed screen not updating in RPCS3 when using certain add-ons
Fixed depth buffer detection in Quake
Fixed effects declaring the same texture semantic multiple times failing to compile in D3D9
Fixed shader interface matching when system value semantic contains a trailing zero
Fixed whitespace in macro definition ending up in replacement text
Fixed preprocessor crash if encountering end of file in a preprocessor statement
Fixed line numbers preprocessor generates for lines directly following an include statement
Fixed add-on information missing in overlay when file version info is not using default translation
Fixed technique context menu not working for techniques with "enabled" annotation
Fixed open code editors for included files not updating after effect reload
Fixed code editor colorization for preprocessor directives with spaces in them
Fixed preset shortcut keys in config getting duplicated with each load
Fixed GPU timestamp queries returning invalid results sometimes in D3D10/11
Fixed push descriptor bindings in OpenGL add-on events
Fixed 32-bit value count for push constants in D3D9 add-on events
Fixed missing value conversion for some D3D9 dynamic states
Miscellaneous:
Added "dot" intrinsic overload that accepts scalars to ReShade FX
Added special behavior when calling "reshade::api::effect_runtime::render_effects" with no render target view: This now effectively disables effect rendering done by ReShade altogether, which can be useful if doing that manually via calls to "reshade::api::effect_runtime::render_technique"
Added support for "#pragma reshade showfps" and "#pragma reshade showclock" directives again
Added "create_swapchain" add-on event in OpenGL (called during "wglSetPixelFormat")
Added support for creating resource views with a default resource view description (which will create a view encompassing the entire resource)
Added render buffer creation in OpenGL for "reshade::api::resource_type::surface" and fixed automatic mipmap levels
Added log message when resizing VR effect runtime
Added internal compiler error to effect error list when pipeline creation failed
Moved "AddonPath" option to "ADDON" config section
Changed ReShade icon
Changed log fallback filename (will now attempt to open ReShadeX.log where X is a number greater or equal 2 if ReShade.log is in use)
Changed add-on manager to avoid loading add-on DLLs for disabled add-ons entirely
Changed file list in technique context menu to show relative paths
Changed preprocessor defines hidden in the overlay to include those starting with "INCLUDE_GUARD_"
Changed "present" event in VR to be called separately for both eye submits
Changed D3D11 state block implementation
Changed Vulkan copy command hooks to call events for image layer ranges rather than single layers
Simplified texture mapping using add-on API in D3D12 (can now create CPU-visible textures, ReShade will translate that into a D3D12 buffer behind the scenes)
Improved "wglSwapMultipleBuffers" implementation to behave more like the original
Removed automatic D3D12 pipeline backup and restore in "reshade::api::effect_runtime::render_effects" and "reshade::api::effect_runtime::render_technique" (better handled in add-on code)
Removed stats overlay settings in VR (since those cannot be seen there anyway)