ReShade Addon That Renders Behind UI/Fog

ZabaZu

Member
Gender
Male
REST is a ReShade addon that lets you mark shader hashes and inject shaders at various points in the render pipeline. In the case of PSO, you can get shaders to render behind the UI and CCA fog. Unfortunately, I can't find a setup that works consistently 100% of the time, but I do have something that works 99% of the time. One area that breaks is the VR Spaceship boss fight, where effects no longer render. If anybody else runs into any issues, please report them (and if anybody else finds a better config, feel free to share).

https://github.com/4lex4nder/ReshadeEffectShaderToggler

Download the latest release and place the addon files next to your reshade dll. If you want it somewhere else, you can specify the directory in the reshade config.

Below is my REST config, and it's also included as an attachment. Download the file and extract next to the addon file. The config is setup with an expectation that you use Solybum's psobbaddon, as it's required to have the correct shader hashes and locations.

This config is setup for DX11 and DX12 (recommended). DX11 in PSO with REST as of the time of editing this post can exhibit severe framepacing issues with some reshade shaders that do not exist in DX12. DX12, however, will have effect rendering on parts of the main menu, but not in-game.

Once everything is setup, you'll need to open the reshade menu -> addons tab -> expand reshade effect shader toggler -> and select the shader group for your API.

It's also possible to exclude shaders from the shader group, in the event that you want some shaders to render on top of the UI. To do so, open the reshade menu -> addons tab -> expand reshade effect shader toggler -> click settings for the relevant group -> enable "Except for selected techniques" -> select the shaders.

Make sure you have all custom shaders in the ephinea launcher disabled as well (bloom, tonemapping, AO, etc).

INI:
[General]
ResourceShim=none
ConstantBufferHookType=none
ConstantBufferHookCopyType=singular
TrackDescriptors=True
PreventRuntimeReload=False
AmountGroups=2

[Keybindings]
PIXEL_SHADER_DOWN=219
PIXEL_SHADER_UP=221
PIXEL_SHADER_MARK=80
PIXEL_SHADER_MARKED_DOWN=475
PIXEL_SHADER_MARKED_UP=477
VERTEX_SHADER_DOWN=186
VERTEX_SHADER_UP=222
VERTEX_SHADER_MARK=76
VERTEX_SHADER_MARKED_DOWN=442
VERTEX_SHADER_MARKED_UP=478
INVOCATION_DOWN=190
INVOCATION_UP=191
DESCRIPTOR_DOWN=189
DESCRIPTOR_UP=187

[Group0_VertexShaders]
ShaderHash0=2028682045
AmountHashes=1

[Group0_PixelShaders]
ShaderHash0=2227709529
AmountHashes=1

[Group0_ComputeShaders]
AmountHashes=0

[Group0_Constants]
AmountConstants=0

[Group0]
Name=UI/CCA Fog DX11
ToggleKey=0
Active=False
RenderToSRVs=False
RenderSRVPipelineSlot=1
RenderSRVDescriptorIndex=0
RenderSRVShaderStage=0
RenderTargetIndex=0
InvocationLocation=0
MatchSwapchainResolutionOnly=0
RequeueAfterRTMatchingFailure=False
AllowAllTechniques=True
TechniqueExceptions=True
ProvideTextureBinding=False
ClearTextureBindings=False
CopyTextureBinding=True
FlipBufferBinding=False
ExtractConstants=False
ConstantPipelineSlot=0
ConstantDescriptorIndex=0
ConstantPushMode=False
ConstantShaderStage=0
ExtractSRVs=False
SRVPipelineSlot=0
SRVDescriptorIndex=0
SRVShaderStage=0
BindingRenderTargetIndex=0
BindingInvocationLocation=0
BindingMatchSwapchainResolutionOnly=0
ClearPreviewAlpha=True
TonemapHDRtoSDRtoHDR=False
PreserveTargetAlphaChannel=False
FlipBuffer=False

[Group1_VertexShaders]
ShaderHash0=1394454180
AmountHashes=1

[Group1_PixelShaders]
AmountHashes=0

[Group1_ComputeShaders]
AmountHashes=0

[Group1_Constants]
AmountConstants=0

[Group1]
Name=UI/CCA Fog DX12
ToggleKey=0
Active=True
RenderToSRVs=False
RenderSRVPipelineSlot=1
RenderSRVDescriptorIndex=0
RenderSRVShaderStage=0
RenderTargetIndex=0
InvocationLocation=0
MatchSwapchainResolutionOnly=1
RequeueAfterRTMatchingFailure=False
AllowAllTechniques=True
TechniqueExceptions=False
ProvideTextureBinding=False
ClearTextureBindings=False
CopyTextureBinding=False
FlipBufferBinding=False
ExtractConstants=False
ConstantPipelineSlot=2
ConstantDescriptorIndex=0
ConstantPushMode=False
ConstantShaderStage=0
ExtractSRVs=False
SRVPipelineSlot=1
SRVDescriptorIndex=0
SRVShaderStage=0
BindingRenderTargetIndex=0
BindingInvocationLocation=0
BindingMatchSwapchainResolutionOnly=0
ClearPreviewAlpha=True
TonemapHDRtoSDRtoHDR=False
PreserveTargetAlphaChannel=False
FlipBuffer=False
 

Attachments

Last edited:
So there's actually a problem with this: this currently only truly works with Solybum's addon to give it the right render targets. However, with more expensive effects, frametimes are all over the place, except for a perfect storm of conditions to even it out.
for some reason in reshade enabling marty's regrade+ addon fixes frametimes???
If you remove Solybum's addon, you can specify render targets behind UI/Fog as long as there are 3D visuals (main menu and loading screens become affected). This has no frametime issues at all.

I don't know which software is technically at fault for this or if it's even resolvable given that they're two discrete mods. It also means that my settings above only work with Solybum's addon.
 
Back
Top