Dusk Graphics Backends — Pick the Right One
Dusk supports D3D12, D3D11, Metal, Vulkan, OpenGL, OpenGL ES, and WebGPU. Here's which backend to pick on your platform and how to switch.
Most coverage of Dusklight says “Vulkan-based” or “uses Aurora.” Both are misleading: Dusklight actually exposes seven distinct graphics backends in its prelaunch settings, and you can switch between them. This matters for compatibility — if Vulkan misbehaves on your GPU, you have six fallbacks before giving up.
This is verified directly from Dusklight’s source code (src/dusk/ui/settings.cpp on the main branch). The dropdown lives at:
Settings → Prelaunch → Graphics Backend
A restart is required after changing it (Dusklight shows the “A restart is required to apply selected options” modal).
The 7 backends
| Backend | Native to | Use it when |
|---|---|---|
| D3D12 | Windows 10+ | Default on modern Windows; lowest CPU overhead |
| D3D11 | Windows 7+ | Older Windows or older GPU driver lacking D3D12 |
| Metal | macOS, iOS | Default on Apple platforms |
| Vulkan | Windows, Linux, Android | Default on Linux & Android; cross-platform fallback |
| OpenGL | Almost everything | Universal fallback; older / weirder hardware |
| OpenGL ES | Android, embedded | Mobile / lower-power GPUs |
| WebGPU | (experimental) | Future-facing; not the default anywhere yet |
You don’t usually need to know all this — Dusklight picks a sensible default for your platform on first launch. But knowing what’s available is useful when troubleshooting “Dusklight won’t render anything” issues.
Per-platform recommendations
Windows
First try: D3D12. It’s the modern Microsoft API with the best CPU overhead for high-frame-rate rendering — exactly what you want for Dusklight’s unlocked framerate target. If issues: Drop to D3D11 (older driver compatibility) or Vulkan (driver-bug workaround). Last resort: OpenGL.
macOS (Apple Silicon and Intel)
First try: Metal. Apple’s native API; Apple Silicon’s GPU is designed around Metal; expect best results here. If issues: Vulkan via MoltenVK (translation layer) — works but adds overhead. Last resort: OpenGL — Apple deprecated OpenGL in 10.14 and it’s slow, but it sometimes works when newer APIs hit driver bugs.
If Dusk crashes on first launch on Apple Silicon (#826, #805), trying Vulkan or OpenGL is one of the standard workarounds.
Linux (desktop & Steam Deck)
First try: Vulkan. Modern Linux Mesa + AMD/NVIDIA drivers are excellent on Vulkan, and Steam Deck is heavily Vulkan-optimized via Proton’s DXVK + the Mesa stack. If issues: OpenGL — works on essentially everything but is slower. Note: D3D12, D3D11, and Metal are not available on Linux (different OS APIs).
Android
First try: Vulkan. Modern Android phones (Snapdragon 8xx series, Tensor, MediaTek Dimensity) all have good Vulkan drivers. If issues: OpenGL ES — older devices or those with buggy Vulkan implementations. Performance hit, but works.
iOS / iPadOS
First try: Metal. Apple-native; iOS GPU drivers are Metal-first. Fallback: There’s no good fallback on iOS — Metal is what you have. If it doesn’t work, the app generally won’t run.
WebGPU
This is currently experimental. WebGPU is a newer cross-platform API (originally from the web standards world) that promises modern rendering on a single API across all platforms. As of v1.0.0, it’s exposed in the dropdown but not the default. Choose this if you’re curious or testing — not for daily play.
How to switch
- Launch Dusklight
- Open Settings (top of the prelaunch menu, or in-game via Back/Select)
- Switch to the Prelaunch tab
- Graphics Backend dropdown — pick a different option
- Dusklight shows the modal: “A restart is required to apply selected options. Restart now to…”
- Click Restart now
If Dusklight hangs or crashes during the restart, force-quit and relaunch — settings persist between sessions.
Why Dusklight has so many backends (vs other ports)
This is worth noting because it’s a real differentiator:
- Ship of Harkinian (the OoT port) historically supported a smaller set of backends — primarily DX11 and OpenGL.
- Cemu (Wii U emulator) primarily uses Vulkan, with a legacy OpenGL fallback.
- Dolphin supports Vulkan, OpenGL, and D3D12.
Dusklight supporting 7 backends is unusually broad. This is largely thanks to the Aurora cross-platform framework Dusklight is built on — Aurora abstracts over the rendering APIs so Dusklight can target many backends from one codebase.
The practical upside: when one backend has a driver bug for your specific GPU, you have six fallbacks. The downside: Dusklight’s renderer is constrained to features all backends can support — so you won’t see, e.g., D3D12-exclusive ray tracing tricks.
Common backend-switching scenarios
”Dusklight launches but the screen is black with audio”
- This is usually a renderer-specific issue. Try a different backend.
- On Windows: switch from D3D12 → D3D11 → Vulkan.
- On Linux: switch from Vulkan → OpenGL.
- On Mac: switch from Metal → OpenGL.
”Dusklight won’t even launch / crashes immediately”
- The current backend may not be initializing. Switching backends requires Dusklight to launch first (the dropdown is in-app).
- If you can’t launch at all to change the setting, edit Dusklight’s config file directly.
- Verified from the v1.0.1 source code (
src/dusk/config.cpp): the file isconfig.json, formatted as pretty-printed JSON (parsed/written vianlohmann/json, indent=4). Keys are flat dot-namespaced strings such asbackend.graphicsBackendandgame.pauseOnFocusLost. Editbackend.graphicsBackenddirectly to switch backends without launching the app. - Config location is platform-specific (currently shipping v1.0.1; the next release line uses
Dusklightinstead ofDusklightwith auto-migration):- Windows:
%APPDATA%\TwilitRealm\Dusk\config.json - macOS:
~/Library/Application Support/TwilitRealm/Dusk/config.json - Linux:
~/.local/share/TwilitRealm/Dusk/config.json
- Windows:
- Resolved by
SDL_GetPrefPath("TwilitRealm", "Dusk")in current binaries. PR #1059 (merged 2026-05-12) also added adata_location.jsondescriptor enabling Default / Portable / Custom modes for relocating the directory.
”FPS is unexpectedly low”
- Try a different backend; some GPUs have asymmetric performance across APIs.
- Especially on older AMD GPUs, OpenGL may be slower than D3D11/12 or Vulkan.
- On older Intel iGPUs, the opposite may be true.
”Dusklight runs but specific effects look wrong (bloom, shadows, etc.)”
- The pulsating bloom bug at unlocked framerate (#825) is not backend-specific — it’s an interpolation issue. Switching backends won’t fix it.
- For other rendering glitches, try a different backend to isolate whether it’s a renderer bug or a game logic bug.
Backend availability by platform (verified)
| D3D12 | D3D11 | Metal | Vulkan | OpenGL | OpenGL ES | WebGPU | |
|---|---|---|---|---|---|---|---|
| Windows | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ⚙️ |
| macOS | ❌ | ❌ | ✅ | ⚙️ (MoltenVK) | ✅ | ❌ | ⚙️ |
| Linux | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ⚙️ |
| Android | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ⚙️ |
| iOS | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ⚙️ |
Legend:
- ✅ Available and a normal default option
- ⚙️ Available but experimental / depends on extra runtime
- ❌ Not available (no underlying OS API)
What’s missing (verifiability caveat)
The Dusk source code exposes the dropdown, but TwilitRealm hasn’t published:
- A formal “official recommendation” of which backend to use per platform
- Performance benchmarks comparing backends on the same hardware
- A list of known driver bugs per backend
We’ve inferred the recommendations above from general knowledge of these APIs and Aurora’s design. If you have a specific backend issue, the Dusk GitHub issues page is the authoritative place to check, and the official Dusk Discord (discord.gg/dusktp) is where the team and community discuss workarounds.
Related
- Dusklight system requirements — broader platform support context
- Verified known issues at v1.0.0
- How to install Dusklight on your platform
Last updated: 2026-05-10. Backend list verified against src/dusk/ui/settings.cpp on main branch.
← Pillar guide · All features