Use when the user wants to install, configure, update, or remove ReShade post-processing for a Steam game on Linux. Covers shader installation, game-specific research, effect recommendations, and Proton/DXVK compatibility. Trigger on mentions of ReShade, game visuals, shaders, post-processing, or visual enhancement for games.
Install and configure ReShade for Steam games on Linux (Proton/Wine), with game-specific shader recommendations based on art style and known compatibility.
/enhance-game <game name> # Install + configure
/enhance-game <game name> update # Update ReShade + shaders
/enhance-game <game name> remove # Remove ReShade from game
ReShade is a post-processing injector that hooks into a game's rendering pipeline to add effects like better anti-aliasing, sharpening, color correction, ambient occlusion, and screen-space global illumination. On Linux, games run through Proton (Wine + DXVK/VKD3D), so ReShade hooks into the translated Vulkan pipeline via DLL overrides.
The reshade-linux.sh script from kevinlekiller/reshade-steam-proton handles downloading ReShade, shader repositories, and linking them to game directories.
Locate the game executable in the Steam library:
# Search Steam common directory for the game
find ~/.local/share/Steam/steamapps/common/ -maxdepth 1 -type d -iname "*<search term>*"
# Find the main .exe within the game directory
find "<game dir>" -name "*.exe" -not -path "*/redist/*" -not -path "*/prereq/*"
Identifying the correct exe: Many games have multiple executables (launchers, crash reporters, redistributables). Look for:
Binaries/Win64 or Bin directoryDetect hardware first:
lspci | grep -iE 'VGA|3D|Display'
cat /proc/cpuinfo | grep "model name" | head -1
Research the game with hardware context. Run these searches:
protondb.com/app/<appid>) — Linux-specific issues, working Proton versions, required workarounds for this hardwareKey things to identify:
Collect findings to inform shader recommendations in Phase 6 and present any Linux-specific gotchas in Phase 7.
Download the script (if not already present):
curl -LO https://github.com/kevinlekiller/reshade-steam-proton/raw/main/reshade-linux.sh
chmod +x reshade-linux.sh
Check if ReShade is already installed for this game:
ls -la "<game exe dir>/" | grep -E 'dxgi.dll|d3d11.dll|ReShade'
If already installed, skip to Phase 4 (shader packs).
Run the installer with piped answers. The script asks 5 interactive questions:
printf '%s\n' \
"i" \
"<path to directory containing game exe>" \
"y" \
"y" \
"y" \
| RESHADE_ADDON_SUPPORT=1 bash reshade-linux.sh 2>&1
The 5 answers in order:
i — install (not uninstall)y — confirm the path is correcty — auto-detect DLL overridey — confirm detected architecture and DLL (typically 64-bit, dxgi.dll)If auto-detection is wrong (e.g., 32-bit game or OpenGL), run interactively instead and specify manually.
The script installs:
Clean up the downloaded script after installation:
rm reshade-linux.sh
The default shader repos cover basics but lack free GI/RT options. Install these into the external shaders directory:
EXTDIR=~/.local/share/reshade/External_shaders
# DH_UBER_RT — free GI + AO + reflections
git clone https://github.com/AlucardDH/dh-reshade-shaders.git "$EXTDIR/dh-reshade-shaders"
# YASSGI — best free screen-space GI quality
git clone https://github.com/Pentalimbed/YASSGI.git "$EXTDIR/YASSGI"
Link into the Merged shaders directory:
MERGED=~/.local/share/reshade/ReShade_shaders/Merged/Shaders
MERGED_TEX=~/.local/share/reshade/ReShade_shaders/Merged/Textures
# Link DH shader .fx files
bash -c 'for f in '"$EXTDIR"'/dh-reshade-shaders/Shaders/*.fx; do
[ -f "$f" ] && ln -sf "$f" "'"$MERGED"'/$(basename "$f")"
done'
# Link DH textures
bash -c 'for f in '"$EXTDIR"'/dh-reshade-shaders/Textures/*; do
[ -f "$f" ] && ln -sf "$f" "'"$MERGED_TEX"'/$(basename "$f")"
done'
# Link YASSGI (main shader only, not game-specific variants)
ln -sf "$EXTDIR/YASSGI/Shaders/YASSGI.fx" "$MERGED/YASSGI.fx"
Verify all GI options are available:
ls "$MERGED" | grep -iE 'uber_rt|yassgi|radiant'
# Should show: dh_uber_rt.fx, RadiantGI.fx, YASSGI.fx
The global ReShade.ini lives at ~/.local/share/reshade/ReShade.ini. Verify it exists before editing:
ls -la ~/.local/share/reshade/ReShade.ini
# If not found: find ~/.local -name "ReShade.ini" 2>/dev/null
Apply these Linux-specific fixes:
Overlay keybind — Home key doesn't pass through Proton reliably. Change to F10:
[INPUT]
KeyOverlay=121,0,0,0
Input processing — Set to 1 so ReShade captures input alongside the game:
InputProcessing=1
Effect search paths — The SweetFX shaders are in a subdirectory that ReShade doesn't search by default. Add it:
[GENERAL]
EffectSearchPaths=Z:\home\<user>\.local\share\reshade\ReShade_shaders\Merged\Shaders,Z:\home\<user>\.local\share\reshade\ReShade_shaders\Merged\Shaders\SweetFX
Replace <user> with the actual username. Read the existing ReShade.ini first to preserve other settings — only modify these specific keys.
STOP — Present shader recommendations and wait for approval before proceeding.
Based on the game research from Phase 2, build a recommendation table. Use the shader catalog as the source of truth for exact performance costs, GI shader comparisons, and effects to avoid for the game's graphics API.
Recommendation framework:
| Category | When to recommend | When to skip |
|---|---|---|
| Anti-aliasing (SMAA) | Almost always — better than in-game TAA | Game has excellent built-in AA |
| Sharpening (CAS, LumaSharpen) | Game uses TAA (causes blur) | Game is already sharp |
| Color (Vibrance, Curves, LiftGammaGain) | Game looks washed out or flat | Game has strong art direction that shouldn't be altered |
| GI/AO (DH_UBER_RT, YASSGI, RadiantGI, MXAO) | Game lacks ambient occlusion or has flat lighting | Performance-constrained, or game has good built-in GI |
| Bloom | Game lighting feels flat | Game already has bloom |
| Depth of Field | Screenshot/photography use | Active gameplay |
| Film grain / Chromatic aberration | Almost never | Almost always |
Present to user as:
Processing order (top to bottom in ReShade):
After shader selection approval, present the final setup summary:
Steam launch options — The user must set this manually in Steam (Properties > Launch Options).
First, check which DLL the installer linked:
ls -la "<game exe dir>" | grep -E 'dxgi|d3d11|d3d9'
Then use the matching DLL name in the override:
WINEDLLOVERRIDES="d3dcompiler_47=n;<detected_dll>=n,b" %command%
For example, if the symlink is dxgi.dll: WINEDLLOVERRIDES="d3dcompiler_47=n;dxgi=n,b" %command%
First launch instructions:
ReShadePreset.ini in the game directory and persist across launchesPresent any game-specific issues found during Phase 2 research (API switching, known crashes, required launch flags).
Re-run Phase 3 (the installer checks for updates automatically), then update external shader repos:
cd ~/.local/share/reshade/External_shaders/dh-reshade-shaders && git pull
cd ~/.local/share/reshade/External_shaders/YASSGI && git pull
Re-link any new shader files using the same commands from Phase 4.
Same as Phase 3 but pipe u (uninstall) instead of i: answers are u, game exe directory, y. Then remove WINEDLLOVERRIDES from Steam launch options.
To fully remove ReShade from the system: rm -rf ~/.local/share/reshade
Before declaring setup complete, verify:
WINEDLLOVERRIDES set in Steam launch optionsls -la <dir> | grep dxgi)EffectSearchPaths in ReShade.ini includes SweetFX subdirectoryKeyOverlay=121 (F10) and InputProcessing=1 set in ReShade.iniSee troubleshooting.md for depth buffer issues, crashes, performance problems, and other common Linux/Proton ReShade issues.
See shader-catalog.md for a complete list of installed shader packs, what each effect does, and performance impact.