REST Enhanced – ReShade Effect Shader Toggler with Auto Scene Colour

  • starpaw
  • Topic Author
More
15 hours 3 minutes ago - 15 hours 1 minute ago #1 by starpaw REST Enhanced – ReShade Effect Shader Toggler with Auto Scene Colour was created by starpaw
REST Enhanced v1.6.1.633 - ReShade Effect Shader Toggler

Hi everyone,

I’ve released a new version of REST Enhanced, my continuation and expanded version of ReShade Effect Shader Toggler.

REST allows selected ReShade techniques to be injected at specific shader-defined points in a game’s rendering pipeline instead of only at ReShade’s normal end-of-frame position.

This is particularly useful for effects that need to render before later fog, post-processing or UI composition.

My enhanced version builds substantially on the original REST project and currently supports:
  • Direct3D 10
  • Direct3D 11
  • Direct3D 12
  • Vulkan
  • x86 and x64
It also includes Auto Scene Colour, which can automatically identify a suitable scene-colour target and handle native-resolution staging for upscaled rendering paths such as DLSS.

Primary testing target

My primary development and testing target has been Baldur’s Gate 3, using both:
  • Direct3D 11, particularly with DLSS and internal-resolution rendering
  • Vulkan, including native-resolution staging and shader-boundary injection
BG3 has been particularly useful for developing REST because it exercises complex rendering paths involving upscaling, later fog and post-processing, and UI composition.

As a result, BG3 D3D11 and Vulkan have received the majority of my real-world runtime testing so far.

I’m now particularly interested in feedback from people using REST Enhanced with other games, APIs and rendering configurations so I can broaden compatibility and continue developing it further.

What’s new in v1.6.1.633

Improved shader hunting

The shader-hunting interface has received a fairly extensive overhaul:
  • Responsive hunting workspace with a larger default layout
  • Adaptive two-column shader list for large collections
  • Deterministic shader ordering shared by the UI and Prev/Next navigation
  • Press-and-hold Prev/Next navigation
  • Prev marked / Next marked navigation
  • Mark + Previous / Mark + Next controls
  • Copy shader hash
  • Rescan active shaders without losing existing marks
  • Search
  • All / Marked / Unmarked filtering
  • Session-retained search, filter, shader stage, preview channel and pane width
For large collections, the shader list can automatically switch to two columns.

The navigation order now matches the visual order exactly. REST moves down the left column first and then continues from the top of the right column.

Direct selection is also based on the actual shader hash rather than a container index, preventing the wrong shader from being selected when filtering or using the two-column layout.

Group sharing

Toggle groups can now be copied to and imported from the clipboard using REST’s existing INI representation.

This should make it considerably easier to share game-specific REST configurations.

For safety, imported groups start:
  • Inactive
  • With no hotkey assigned
This means importing somebody else’s configuration cannot immediately alter rendering or take over an existing shortcut.

Safer configuration saving

Configuration persistence has also been hardened.

REST now:
  • Writes changes to a temporary configuration first
  • Reparses and verifies that temporary configuration
  • Keeps the previous configuration as
    ReshadeEffectShaderToggler.ini.bak
  • Atomically replaces the live INI only after validation
  • Stores a configuration version for future migrations
The configuration dirty-state system has also been rewritten so REST no longer needs to generate and compare the entire configuration every overlay frame.

Opening shader hunting and clicking Done without actually changing the marked shaders now correctly remains a no-op rather than reporting that the configuration has changed.

Improved Auto Scene Colour diagnostics

The diagnostics panel now includes Recent candidates.

Instead of creating a new numbered entry for every Waiting / Matched / Successful transition, REST groups activity by the actual shader and render-target candidate.

Each candidate can show information such as:
  • Shader hash
  • Render target
  • Scene resolution
  • Format
  • Current status
  • Successful render count
  • Vulkan boundary
This makes Auto Scene Colour diagnostics considerably easier to follow during testing.

Vulkan stability improvements

While stress-testing the new press-and-hold shader navigation, I discovered an important Vulkan resource-lifetime issue.

Rapidly cycling through shaders with different preview targets could cause REST to recreate a Vulkan preview image while the previous image was still referenced by recorded or executing GPU commands.

After enough cycling this could eventually result in:
VK_ERROR_DEVICE_LOST

REST now handles this safely by flushing ReShade’s immediate command list and synchronising the Vulkan graphics queue before replacing preview resources.

This synchronisation only occurs when the preview allocation actually needs to change, rather than during normal navigation.

I was able to reproduce the original crash by continuously holding Prev/Next through a large shader collection. After the fix, I repeated the same sustained stress testing without the device loss occurring.

Auto Scene Colour

Auto Scene Colour is designed to reduce the amount of manual render-target configuration required when finding a useful injection point.

It can identify the active scene-colour target and, where necessary, stage the image from the game’s internal rendering resolution to ReShade’s final output resolution before running the selected techniques.

For example, one of my tested Baldur’s Gate 3 Vulkan configurations uses:
Scene: 2560x1440
Output: 3840x2160
Format: R11G11B10_FLOAT
Staging: Vulkan image blit
Boundary: post-pass RT transition
Techniques: Lumenite_Kernel -> Lumenite_LSAO

This allows those effects to render at the selected scene boundary while later BG3 fog and UI composition remain above them.

The exact shader hash and ideal injection point will naturally depend on the game and configuration.

Optimisation work

There are also a number of less visible runtime improvements in this release:
  • Cached and sorted ReShade technique metadata
  • Reduced unnecessary shader-hash copies
  • Reduced unnecessary selected-technique copies
  • Cached configuration dirty state
  • Vulkan pending-work fast paths
  • Deferred Vulkan processing is skipped when no Auto Scene Colour or preview work is pending
  • Render-pass and subpass bookkeeping remains active for correctness
Download

GitHub repository:

github.com/Pav-Osmolski/ReshadeEffectShaderToggler

Latest release:

REST Enhanced v1.6.1.633

The release package contains both:
ReshadeEffectShaderToggler.addon64
ReshadeEffectShaderToggler.addon32

along with the shaders, documentation and SHA-256 checksum.

Feedback and testing wanted

I’m actively looking for feedback and testing from other ReShade users so I can continue improving and developing REST Enhanced.

As mentioned above, Baldur’s Gate 3 using D3D11 and Vulkan has been my primary testing environment. Those paths have therefore received considerably more real-world testing than many other games and configurations.

Testing in other titles would be extremely valuable.

I’d particularly like feedback on:
  • Other Vulkan games
  • D3D10, D3D11 and D3D12 games
  • DLSS, FSR, XeSS and dynamic-resolution rendering
  • 32-bit games
  • Games with unusual render-target layouts
  • Complex multi-stage post-processing pipelines
  • Games where the original REST required difficult manual RT/SRV configuration
  • Large shader collections
  • Auto Scene Colour target selection
  • Shader hunting behaviour
  • General UI and workflow improvements
Positive results are useful too.

Knowing that a specific game, API and rendering configuration works correctly helps establish which areas are already reliable and which still need more testing.

If you encounter a problem, the most useful information would be:
  • Game
  • Graphics API
  • ReShade version
  • REST Enhanced version
  • Whether Auto Scene Colour is enabled
  • Relevant shader hash or group
  • Resolution and upscaler configuration
  • What you expected to happen
  • What actually happened
  • REST diagnostics
  • ReShade log for crashes or rendering failures
  • Screenshots or a short video where useful
Game-specific REST configurations are also very welcome. The new Copy group / Import group functionality should make those much easier to share.

If you discover an edge case, compatibility problem, interesting injection point, or simply have an idea for improving the workflow, please post it here or open an issue/discussion on GitHub.

I’d like to use community testing and feedback to broaden game and API coverage, identify edge cases, and help guide further development of REST Enhanced.

Credits

The project retains the work and credits of the original REST / ShaderToggler contributors.

Current enhanced development, documentation and testing by DeViLhoOD.
Last edit: 15 hours 1 minute ago by starpaw. Reason: Formatting corrections.

Please Log in or Create an account to join the conversation.

We use cookies
We use cookies on our website. Some of them are essential for the operation of the forum. You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.