The real ReShade 6.8 for macOS. Same overlay, hotkeys, presets, screenshots, effects (.fx) and languages as on Windows —
packaged as a library that is injected into games, plus a SwiftUI launcher app that makes it easy to use.
Credit where it is due. All the hard work — the shader compiler, the effect runtime, the overlay, the whole of ReShade — is by Patrick Mours (crosire) and the ReShade contributors. MacShade only adds a thin macOS platform layer underneath the unmodified ReShade core and a launcher on top. It is an independent project, not affiliated with or endorsed by ReShade. If you like it, please support the original: https://reshade.me · https://github.com/crosire/reshade
- Runs ReShade in native macOS games (Apple Silicon): Vulkan (MoltenVK), OpenGL and Metal.
- Launcher app: add games by drag & drop or "Find games", pick a look (preset) per game, set start parameters, hotkeys, frame-rate limit — then press Start with ReShade.
- Game Hub: 25 recommended source ports (Quake, UT, Doom, OpenMW, ...) with one-click download of the port for those that publish macOS releases on GitHub (you confirm file name, size and source first), or a link to the project page. Only ports, never game data.
- Your game stays untouched. The launcher makes an ad-hoc signed copy of the game (macOS' hardened runtime would block injection into the original) and starts that.
- Presets per game, each with an explanation of the active filters: Mix (fast), Plus (real bloom), Max (everything), Retro (CRT look) and more.
- Good performance: pipelined OpenGL/Metal bridge, idle bypass (no cost when no effect is active), own FPS counter, optional frame limiter.
- Optional depth buffer for effects like SSAO/DoF (Vulkan games; experimental for OpenGL/Metal).
- Launcher UI in 8 languages (en, de, fr, es, it, pt, ja, zh-Hans).
| Graphics API of the game | How ReShade gets the frames | Depth buffer |
|---|---|---|
Vulkan via MoltenVK (e.g. vkQuake, UZDoom, Yamagi Quake II ref_vk) |
ReShade hooks in directly (Vulkan loader emulation, dyld interposing) | yes |
| OpenGL (e.g. UT2004, UT99, ioquake3) | Bridge: frame → IOSurface → ReShade on a private Vulkan device → back | experimental |
| Metal (e.g. Quetoo / SDL_GPU) | Same bridge, tapped at presentDrawable: |
experimental |
Screen filter mode (opt-in, per game, off by default): for games MacShade cannot hook at all (Metal titles from the Mac App Store, copy-protected or hardened games, Intel-only games under Rosetta) there is a second way. The game starts completely unchanged (no copy, no injection). A helper (MacShadeFilter) captures the game window with ScreenCaptureKit, runs every frame through the same ReShade bridge and shows the result in a borderless window right above the game; mouse input passes through. The ReShade menu and the effect toggle are opened with global hotkeys. Costs one or two frames of delay, has no depth buffer and needs the Screen Recording permission (requested when you switch the option on). Works with windows, macOS full screen and borderless full-screen windows; exclusive full screen is untested. The menu, effects and screenshot keys are system-wide hotkeys that are only active while the game is in front. With the effects switched off the filter stops capturing and the game runs unfiltered. Enable it under Advanced of a game.
Not supported: Windows games through Wine/CrossOver/Whisky (Direct3D), x86_64-only or 32-bit games, games with a statically linked MoltenVK (e.g. Raze), VR.
How do I know whether a game works? When you add a game, the launcher inspects its executable (architectures, linked graphics libraries) and shows the graphics path or why it cannot work.
That is only a prediction. The proof is starting the game: the log tab shows Initializing ReShade … and the path used, and the overlay opens with your overlay key.
work/check_games.sh starts every game in the list and writes a report (GAMES.md).
Vulkan games that load their functions through the instance (volk-style) or ask the loader for VK_KHR_portability_enumeration work too: MacShade emulates those parts of the Vulkan loader. For such a game put MoltenVK in place of its libvulkan.1.dylib.
Tested so far: vkQuake, UZDoom (Vulkan), UT2004, UT99, Quake II (Yamagi, gl1 renderer) (OpenGL), Quetoo (Metal) — see GAMES.md.
- Build or download
MacShade.appand start it. - Add a game (
.app) with +, drag & drop, or Find games. - Choose a look on the Look tab, then press Start with ReShade.
- In the game, press the overlay key (default
Home, i.e. Fn + ←) to open the ReShade overlay. Tutorial on first start. - Your own effects: put a folder with
Shaders/andTextures/into~/Library/Application Support/MacShade/Collections/(or use Settings → Import shaders). Per game, configuration, presets, log and screenshots live in~/Library/Application Support/MacShade/Instances/<id>/.
Measured on an Apple Silicon Mac, per frame of ReShade work (OpenGL bridge, UT2004 at about 2048×1280; larger windows cost more):
| Preset | What it does | Cost |
|---|---|---|
| Look (default), Look-… | MacLook: sharpening, bloom, vibrance, vignette with one full-resolution pass (plus a small quarter-resolution bloom) | ~1–2 ms |
| -Mix | MacLook + CAS sharpening | ~2.5–4 ms |
| -Plus | Vibrance + qUINT bloom + CAS | ~4.5–8 ms |
| -Max | prod80 colour + bloom + Smart Sharp | ~8–16 ms |
| -Retro | pale colours, vignette, CRT scanlines | ~5–9 ms |
Every full-screen pass costs real time on the GPU, so more effects mean fewer FPS. The launcher's default look is deliberately a single full-resolution pass.
Requirements: Xcode (Swift 5.9+), CMake, Python 3, MoltenVK (brew install molten-vk).
# 1. third-party inputs (not part of this repo)
mkdir -p third_party && cd third_party
git clone --depth 1 https://github.com/KhronosGroup/Vulkan-Headers
git clone --depth 1 -b slim https://github.com/crosire/reshade-shaders
git clone --depth 1 -b legacy https://github.com/crosire/reshade-shaders reshade-shaders-legacy
git clone --depth 1 https://github.com/martymcmodding/qUINT
git clone --depth 1 https://github.com/CeeJayDK/SweetFX
cd ..
# 2. the injected library
cd mac && mkdir -p build && cd build && cmake .. && make -j10 # libmacshade.dylib
# 3. the launcher app (bundles the dylib, MoltenVK and the effect collections)
cd ../../App && ./build_app.sh # MacShade.appApp/sign_and_package.sh signs the app with your Developer ID Application certificate (hardened runtime), builds MacShade-<version>.dmg, and — if a notarytool
keychain profile exists — notarizes and staples it. One-time setup: xcrun notarytool store-credentials MacShade --apple-id <id> --team-id <team>.
reshade/– the ReShade 6.8 sources (BSD-3-Clause) with a few macOS patches, vendored without Git history. Seereshade/LICENSE.md.mac/platform/– the macOS layer: start-up and paths, Vulkan loader emulation, input (NSEvent), OpenGL/Metal bridge, resources, localisation.mac/compat/– Win32 shims so the unmodified ReShade code compiles on macOS.App/– SwiftUI launcher (Sources/), presets, effect collections, translations (gen_strings.py).work/– developer scripts (check_games.sh,winid2.swiftfor window screenshots). They are tied to the author's setup (paths, game list) and are shown for reference.- NOTES.md – architecture notes and pitfalls.
MACSHADE_BASE, MACSHADE_TRACE, MACSHADE_LOG_STDERR, MACSHADE_TEST_KEYS=frame:vk,…, MACSHADE_CRASH_TRACE, MACSHADE_BRIDGE_DEBUG, MACSHADE_BRIDGE_STATS=1,
MACSHADE_FILTER_DEBUG=1, MACSHADE_FILTER_OPEN_OVERLAY=1 (screen filter helper: open ReShade's menu after 4 s), MACSHADE_LIB, MACSHADE_DISABLE_GL_BRIDGE, MACSHADE_DISABLE_METAL_BRIDGE, MACSHADE_PIPELINE, MACSHADE_FPS_LIMIT, MACSHADE_NO_DEPTH.
MacShade stands on the work of many people. Thank you!
- ReShade by Patrick Mours (crosire) and contributors — the heart of everything here. BSD-3-Clause.
- reshade-shaders (standard and legacy effects) — crosire and the shader authors.
- qUINT — Marty McFly.
- SweetFX (CAS port, LumaSharpen, Vibrance, CRT, …) — CeeJay.dk and contributors.
- prod80 ReShade Repository — prod80.
- AstrayFX — BlueSkyDefender (shaders under CC BY-ND 4.0, shipped unmodified).
- OtisFX — Frans Bouma (Otis_Inf).
- MoltenVK and Vulkan-Headers — Khronos Group / The Brenwill Workshop (Apache-2.0).
- Dear ImGui, stb, glad, fpng, and the other libraries under
reshade/deps/— see their own licenses.
The effect collections shipped in App/Resources/Collections/ keep their authors' licenses (see the LICENSE files in the respective folders, where the authors provide one).
The game icons shown in the launcher are read from the games installed on your Mac.
MacShade's own code (mac/, App/Sources, scripts) is released under the BSD 3-Clause license, like ReShade itself.