Optimizing Cemu

If you need further help, ask on the official Cemu Discord Server for assistance.

Required Reading

For the best performance, we'll be switching the default graphics API from OpenGL to Vulkan. While less stable, Vulkan tends to run faster and has extra features in Cemu which OpenGL doesn't.

Asynchronous Shader Compilation

When running games in Cemu, graphical shaders need to be re-compiled to work on a desktop GPU. This can take some time, which causes small stutters in the game every time a new one is sent to the emulator.

Doing this asynchronously allows the emulator to run the process in the background. This means that when the shader is first called, it skips being rendered to the screen, and is instead stored for the next time it's used, providing a much smoother experience.

The video below shows loading Breath of the Wild for the first time using asynchronous shader complation. After these shaders have been recompiled and cached, they won't need to be converted again, so the graphical glitches stop.

A gif of asynchronous shader compilation

Asynchronous shader compilation in an older, slower Cemu version. More recent builds can do this in under 1/10th of a second, depending on the CPU.

VSync Matching

Vulkan also allows us to use a new experimental VSync technique which allows Cemu to use the game's built-in frame-pacing instead. This avoids tearing and reduces input latency compared to previous methods.

Ensure you are running the latest drivers and that your GPU supports Vulkan.

If your GPU doesn't support Vulkan, follow the OpenGL Guide.

Cemu Settings

  1. Open the Cemu main menu
  2. Click Options -> General settings on the top bar
  3. Navigate to the Graphics tab
  4. Change the "Graphics API" to Vulkan if it is not already
  5. Ensure that your "Graphics Device" is set to use your most powerful GPU if your device has dual graphics
  6. Set "VSync" to Match emulated display (Experimental)
    • If you use a display with variable refresh rate (G-SYNC), set this to Off instead
    • This feature is experimental and may cause issues
  7. Enable Async shader compiler
  8. Navigate to the Audio tab
  9. Under General, change "API" to XAudio2

Cemu should now be running the fastest it can, with a huge increase in performance for some users.