DuskPort

Dusk's 7 Graphics Backends Explained — Pick the Right One for Your Hardware

Dusk supports D3D12, D3D11, Metal, Vulkan, OpenGL, OpenGL ES, and WebGPU. Here's which backend to pick on your platform and how to switch.

Published 2026-05-10

Most coverage of Dusk says “Vulkan-based” or “uses Aurora.” Both are misleading: Dusk 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 Dusk’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 (Dusk shows the “A restart is required to apply selected options” modal).


The 7 backends

BackendNative toUse it when
D3D12Windows 10+Default on modern Windows; lowest CPU overhead
D3D11Windows 7+Older Windows or older GPU driver lacking D3D12
MetalmacOS, iOSDefault on Apple platforms
VulkanWindows, Linux, AndroidDefault on Linux & Android; cross-platform fallback
OpenGLAlmost everythingUniversal fallback; older / weirder hardware
OpenGL ESAndroid, embeddedMobile / lower-power GPUs
WebGPU(experimental)Future-facing; not the default anywhere yet

You don’t usually need to know all this — Dusk picks a sensible default for your platform on first launch. But knowing what’s available is useful when troubleshooting “Dusk 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 Dusk’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

  1. Launch Dusk
  2. Open Settings (top of the prelaunch menu, or in-game via Back/Select)
  3. Switch to the Prelaunch tab
  4. Graphics Backend dropdown — pick a different option
  5. Dusk shows the modal: “A restart is required to apply selected options. Restart now to…”
  6. Click Restart now

If Dusk hangs or crashes during the restart, force-quit and relaunch — settings persist between sessions.


Why Dusk 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.

Dusk supporting 7 backends is unusually broad. This is largely thanks to the Aurora cross-platform framework Dusk is built on — Aurora abstracts over the rendering APIs so Dusk 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: Dusk’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

”Dusk 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.

”Dusk won’t even launch / crashes immediately”

  • The current backend may not be initializing. Switching backends requires Dusk to launch first (the dropdown is in-app).
  • If you can’t launch at all to change the setting, edit Dusk’s config file directly.
  • Config location is platform-specific:
    • Windows: %APPDATA%\TwilitRealm\Dusk\ (look for a settings file)
    • macOS: ~/Library/Application Support/TwilitRealm/Dusk/
    • Linux: ~/.local/share/TwilitRealm/Dusk/
  • Specific config file name and format are [UNVERIFIED] from official docs as of v1.0.0; check the Dusk Discord for guidance.

”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.

”Dusk 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)

D3D12D3D11MetalVulkanOpenGLOpenGL ESWebGPU
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.



Last updated: 2026-05-10. Backend list verified against src/dusk/ui/settings.cpp on main branch.

← Pillar guide · All features