ShaderToggler Advanced is a ReShade 5.1+ add-on for toggling game shaders on and off in groups with a single hotkey.
It is designed for game shaders only, not ReShade effects.
Originally created by Frans "Otis_Inf" Bouma.
Modified and expanded by Sven "Gametism" Königsmann.
This version adds:
- a modernized UI
- active-at-startup support for x86
- group duplication
- drag-and-drop group reordering
- sorting functions
- improved hotkey handling
- accelerated shader browsing while holding keys
- controller button support
- hold-based activation modes
- auto-hide (timed) toggle groups
- inverted auto-hide behavior
- multiple timed trigger keys with configurable trigger modes
- timed suppression keys
- a global hotkey modifier system for all defined hotkeys
- improved shader detection behavior for DXVK and RenoDX (DX9)
- assignable mouse hotkeys (Left, Right, Middle, Mouse 4 & Mouse 5)
- timed Active at Startup with configurable duration
- Suspend All Toggle Groups with configurable suspend and restore hotkeys
- per-group notices with hover tooltips
Place ShaderToggler.addon64 or ShaderToggler.addon in the same folder as the game executable.
In most cases, this is also the folder where the ReShade DLL is located.
For Vulkan games, the ReShade DLL may be located elsewhere depending on the setup.
For some Unreal Engine games, there may be two executables:
- one in the root game folder
- one deeper inside a path like
GameName\Binaries\Win64\GameName-Win64-Shipping.exe
In those cases, ShaderToggler has to be placed in the actual executable folder, for example:
GameName\Binaries\Win64
ReShade must also be installed in that same folder.
Make sure you are using the ReShade version with Add-on support.
When the game starts, open the ReShade overlay and go to the Add-ons tab.
You should see the Shader Toggler panel and its controls there.
To create a new shader toggle group:
- Open the ReShade overlay
- Go to the Shader Toggler section
- Click New
A new group is created with:
- the default name
Default - the default hotkey
Caps Lock
To change these:
- click Edit
- rename the group
- assign a different hotkey
Hotkeys do not need to be unique.
Group names also do not need to be unique.
A hotkey can be:
- a keyboard key
- a mouse button
- a supported controller button
- optionally combined with
Alt,Ctrl, orShiftfor keyboard bindings
Each group can also be set to:
- Active at startup
- Hold mode
- Auto-hide mode (timed)
You can also:
- duplicate groups
- reorder groups with drag and drop
- save all groups to the config file
ShaderToggler Advanced includes a global hotkey modifier setting that can be applied to all defined keyboard and mouse hotkeys at runtime.
Available options:
NoneCtrlAltShiftCtrl + AltCtrl + ShiftAlt + ShiftCtrl + Alt + Shift
This is useful if:
- you want safer default hotkeys
- you want to reduce accidental triggers
- you do not want to manually rebind every group after updates
The selected modifier is applied at runtime only.
That means:
- your stored hotkeys stay exactly the same in the config
- the modifier is simply required on top of the existing binding
- no manual rebinding is needed
If a group hotkey is:
Caps Lock
and the global modifier is set to:
Ctrl
then the effective hotkey becomes:
Ctrl + Caps Lock
If a hotkey is already:
Alt + F1
and the global modifier is:
Ctrl
then the effective hotkey becomes:
Ctrl + Alt + F1
The global modifier applies to:
- keyboard hotkeys
- mouse hotkeys
It does not change:
- gamepad button bindings
ShaderToggler Advanced supports three main ways to control a group:
- Press key → ON
- Press again → OFF
This is the classic behavior.
Example:
You want to manually hide a minimap:
- press key once → minimap disappears
- press again → minimap returns
- Group is active only while holding the key
Optional:
- Invert hold → active by default, turns OFF while holding
This is useful for:
- ADS overlays
- temporary HUD visibility
- quick comparison setups
Example (normal hold):
- hold key → scoped overlay hidden
- release key → scoped overlay returns
Example (invert hold):
- overlay is normally hidden
- hold key → overlay becomes visible only while held
Timed mode temporarily changes a group state when one of its trigger keys is used.
You can configure:
- Hide delay / show time
- Minimum visible time
- Fade-out linger
- Invert auto-hide behavior
- multiple trigger keys
- trigger mode per trigger key
- timed suppression keys
Each timed trigger key can use one of these modes:
The timed state starts only when the key is pressed.
Example:
Press attack once → HUD appears briefly → then hides again
The timed state keeps refreshing while the key is held.
Example:
Hold aim button → timer keeps refreshing as long as the button is held
The timed state starts on press and also keeps refreshing while the key remains held.
Example:
Press and keep holding a gamepad trigger → HUD stays visible longer and only hides after release + delay
This part is very important.
ShaderToggler does not “show” or “hide” HUD elements directly in the usual sense.
It only controls whether the selected game shaders are allowed to render or blocked.
So for a hunted HUD group:
- Group ACTIVE = selected shaders are blocked = HUD hidden
- Group INACTIVE = selected shaders are allowed = HUD visible
Because of that, timed mode may appear inverted at first depending on how your group is set up.
When triggered:
- the group temporarily becomes active
- after the timer ends, it returns to inactive
This is useful when:
active = hiddenis not what you want for the resting state- or when the group should only block something briefly
Example:
- HUD is visible
- press trigger
- HUD disappears
- after delay, HUD returns
This means your group is behaving like a temporary hide group.
When triggered:
- the group temporarily becomes inactive
- after the timer ends, it returns to active
This is the most useful mode for modern auto-hide HUD behavior.
For a HUD hide group:
- hunt the HUD shaders normally
- confirm that
group active = HUD hidden - enable:
- Active at startup
- Auto-hide mode
- Invert auto-hide behavior
- game starts → group is active → HUD hidden
- press trigger → group turns inactive temporarily → HUD appears
- timer ends → group turns active again → HUD hides
Goal:
- HUD hidden by default
- attack input reveals HUD briefly
- HUD hides again after a delay
Setup:
- hunt HUD shaders
- make sure
group active = HUD hidden - enable Active at startup
- enable Auto-hide mode
- enable Invert auto-hide behavior
- add attack key as timed trigger
- choose delay, for example
1500 ms
Result:
- HUD hidden normally
- press attack → HUD appears
- after 1.5 seconds → HUD disappears again
Goal:
- show the HUD whether the player uses mouse or controller
Setup:
- same as above
- add multiple timed triggers:
Left Mouse ButtonGamepad RT
Result:
- either trigger reveals the HUD
- timer refreshes when either input is used
Goal:
- HUD stays visible while continuously attacking
Setup:
- use While held or Press + hold for the trigger
- set a short delay, for example
500 ms
Result:
- repeated or held input keeps the HUD visible
- once input stops, HUD hides after the delay
Goal:
- briefly hide a specific overlay when a key is pressed
Setup:
- group represents the overlay you want to suppress
- use normal timed mode
- do not invert it
Result:
- press trigger → overlay disappears briefly
- after the timer ends → overlay returns
Timed suppression keys allow you to temporarily prevent a timed group from activating while specific buttons or keys are pressed.
This feature is designed mainly for:
- combat abilities
- alternate attacks
- contextual actions
- special moves
- situations where the normal timed trigger should temporarily be ignored
Timed suppression only affects:
- Auto-hide mode / Timed mode groups
It does not affect:
- normal toggle mode
- hold mode
Some games reuse the same trigger button for:
- normal gameplay actions
- special abilities
- contextual interactions
Without suppression keys, this can create problems.
You use:
RTas the timed trigger to reveal a hidden HUD or disable a heavy visual effect
But the game also uses:
RT + YRT + BRT + XRT + A
for elemental abilities or special attacks.
In that situation, the timed trigger would normally activate even during those abilities.
That can cause:
- important VFX to disappear
- combat readability problems
- unwanted HUD behavior
- incorrect temporary shader blocking
Timed suppression keys solve this.
When any suppression key is currently held:
- timed activation is blocked
- existing timed visibility is cancelled immediately
- fade-out linger timers are reset
- the group returns to its resting state
The suppression keys only affect timed behavior.
The group itself still exists normally and can still:
- toggle manually
- use hold mode
- use startup behavior
- use normal shader blocking
Disable the heavy RT combat visual effect during normal attacks, but keep elemental skill effects visible.
Timed trigger:
RT
Suppression keys:
ABXY
-
holding
RTalone:- heavy combat effect gets disabled
-
using:
RT + YRT + BRT + XRT + A
suppression activates and prevents the timed group from triggering.
This allows:
- elemental powers
- skill effects
- special attacks
to remain fully visible.
Suppress HUD auto-show while:
- inventory button
- map button
- radial menu button
is held.
Keep cinematic VFX active only during:
- super attacks
- finishers
- special states
Prevent temporary shader blocking during:
- lockpicking
- dialogue wheels
- interaction prompts
- photo mode
Suppression keys:
- are checked continuously
- work instantly
- override timed triggers
- can use keyboard, mouse, or controller buttons
If multiple suppression keys are defined:
- pressing any of them activates suppression
Timed suppression is evaluated before timed activation logic.
That means suppression always has priority over timed triggers.
This is the main timed duration.
- in normal timed mode: how long the group stays temporarily active
- in inverted timed mode: how long the group stays temporarily inactive
For HUD auto-show behavior, this is effectively how long the HUD stays visible.
Prevents the temporary timed state from ending too quickly.
This is useful when:
- fast taps would otherwise make the HUD flash too briefly
- you want a more readable UI reveal
Example:
You tap attack very quickly, but still want the HUD to remain visible for at least 300 ms.
This is not a real visual fade.
It is simply an additional linger stage before the group returns to its resting state.
It helps make the transition feel less abrupt in timing, but it does not animate alpha or transparency.
A real visual fade-out is NOT possible with ShaderToggler.
Reason:
- ShaderToggler works by blocking draw calls at the pipeline level
- When a shader is disabled, it is not rendered at all
- There is no access to opacity, blending, or animation states
So the system can only do:
- Fully visible (draw call allowed)
- Fully hidden (draw call blocked)
It cannot:
- interpolate alpha
- animate transitions
- gradually fade elements
A real fade-out would require:
- modifying shader code
- injecting custom blending logic
- or post-processing those exact UI elements
Which is outside the scope of this add-on.
It does not fade the image visually.
It only adds a short extra timed phase before returning to the resting state.
So it behaves more like:
- visible
- linger a bit longer
- hidden
Not:
- 100% opacity
- 75%
- 50%
- 25%
- 0%
Active at Startup can optionally be given a duration.
This is useful for:
- intro skips
- startup logos
- temporary launch-time shader changes
If no duration is configured, Active at Startup behaves like the original implementation.
Suspend All Toggle Groups temporarily disables every toggle group without changing its configured state.
Typical uses:
- pause menus
- inventory screens
- maps
- dialogue
- photo mode
The system supports independent:
- suspend hotkeys
- restore hotkeys
This makes it possible to support games that use different buttons for opening and closing menus.
Configure suspension while gameplay is visible and the menu is closed.
While suspended:
- shader groups are temporarily ignored
- timed modes pause
- startup timers pause
- hold modes pause
- normal toggle presses are queued and applied after restoration
Each group can contain an optional Notice.
Instead of putting warnings into the group name:
DOF - NEGATIVELY AFFECTS SOME CUTSCENES
you can keep names clean:
Name=DOF
Notice=Negatively affects some cutscenes.A small warning indicator appears next to the group name and displays the notice when hovered.
To mark shaders successfully, make sure the element you want to hide is currently visible, for example:
- HUD elements
- menus
- overlays
- visual effects
Then click Hunt Shaders on the group you want to configure.
This starts the shader hunting phase for that group.
During this phase, ShaderToggler shows an overlay at the top of the screen with shader information.
The overlay opacity can be adjusted in the settings, including setting it to fully invisible if needed.
Before browsing shaders, the add-on first collects active shaders for a configurable number of frames.
This reduces the number of shaders you have to go through and makes hunting more practical.
Numpad 1= previous pixel shaderNumpad 2= next pixel shaderNumpad 3= mark / unmark current pixel shader
Numpad 4= previous vertex shaderNumpad 5= next vertex shaderNumpad 6= mark / unmark current vertex shader
Numpad 7= previous compute shaderNumpad 8= next compute shaderNumpad 9= mark / unmark current compute shader
Ctrl + Numpad 1 / 2= previous / next marked pixel shaderCtrl + Numpad 4 / 5= previous / next marked vertex shaderCtrl + Numpad 7 / 8= previous / next marked compute shader
Holding down browsing keys will automatically speed up scrolling over time.
To test a group while hunting:
- press the hotkey assigned to that group
If the selected shaders are correct, the targeted game elements should disappear when the group is active.
When a group is active, the UI shows it as active.
When you are finished hunting shaders for a group, click Done.
To keep your groups for the next session, click:
- Save all Toggle Groups
This writes the configuration to:
ShaderToggler.ini
The file is stored in the same folder as the add-on.
- ShaderToggler Advanced is for game shader toggling, not ReShade effect toggling
- Existing ShaderToggler configurations remain compatible
- Mouse, keyboard and controller hotkeys can be mixed where supported
- Suspend All Toggle Groups is intended for menus and temporary UI restoration
- Per-group notices help keep configurations clean while documenting game-specific caveats
- The UI has been expanded while preserving the original ShaderToggler workflow
Original ShaderToggler:
Frans "Otis_Inf" Bouma
ShaderToggler Advanced modifications:
Sven "Gametism" Königsmann