guide · static export
Emulation

Set up RetroArch with per-core shaders on Windows 11

Install RetroArch on Windows 11 25H2, load cores, and apply different shader presets per system so each core keeps its own look.

by@guidox updated:10/26/26 time:30 min level:Intermediate works on:Windows 11 25H2, RetroArch 1.19+ tools:RetroArch
⚠ Safety notice

Only use ROMs of games you legally own. Dumping and distributing copyrighted ROMs is illegal in most jurisdictions.

TL;DR

Install **RetroArch**, download **slang_shaders**, pick a shader for the running core, then save it as a **Core Preset** so it loads automatically next time.

Before you start

Requirements

  • Windows 11 25H2 (x64)
  • RetroArch stable from https://www.retroarch.com/ or Steam
  • Legally dumped ROMs on a local drive
  • A GPU that supports Vulkan or D3D11
Step by step

Instructions

01

Install RetroArch

Install from winget or the official site. The winget package tracks the stable release.

winget install --id Libretro.RetroArch --source winget
tipThe Steam build gets shaders and cores via the client; the standalone build is more flexible.
02

Switch the video driver to Vulkan

Open **Settings > Drivers > Video**, set it to **vulkan**, then restart RetroArch. Vulkan supports the modern **slang** shader format used by the recommended presets.

⚠ warningIf RetroArch does not start after switching, delete retroarch.cfg next to the exe to reset drivers.
03

Download the shader pack

In the main menu open **Online Updater > Update Slang Shaders**. The pack lands under the RetroArch shaders folder and includes CRT, LCD and handheld presets.

04

Install cores and load a game

Open **Online Updater > Core Downloader**, grab the cores you need (snes9x, mgba, genesis_plus_gx), then **Load Content** and pick a ROM to make sure the core runs.

05

Apply a shader to the running core

While the game runs press F1, open **Quick Menu > Shaders > Load Preset**, and navigate to shaders_slang. Try **crt > crt-royale.slangp** for CRT consoles or **handheld > lcd-grid-v2.slangp** for Game Boy cores.

06

Save the preset per core

Still in **Shaders**, choose **Save > Save Core Preset**. From now on that core loads this shader automatically; other cores keep their own.

tip**Save Game Preset** goes one level finer and binds the shader to a single ROM.
07

Verify the per-core binding

Close content, load a game from a different core, and confirm it loads with its own shader (or none). Reload the first core and the CRT preset should snap back on.

Troubleshooting

Common issues

Shaders menu is empty

You are on the gl driver and only slang shaders were downloaded. Switch to vulkan under **Settings > Drivers > Video** or grab **Update GLSL Shaders** instead.

FPS drops after enabling a CRT shader

crt-royale is heavy; try **crt-geom** or **crt-guest-advanced-fast** on weaker GPUs.

Core preset does not auto-load

Check **Settings > Video > Shaders > Video Shaders** is ON, and that the preset was saved via **Save Core Preset**, not **Save Global Preset**.

FAQ

Frequently asked

Where are presets stored?

Under the RetroArch config directory, in a shaders subfolder named after the preset scope (core, content_dir, game).

Can different ROMs for the same core use different shaders?

Yes, use **Save Game Preset** instead of Save Core Preset.

Does per-core shader support work in the Steam build?

Yes, same menu path, same slang pack via the Online Updater.

How to undo this

Open **Quick Menu > Shaders > Remove > Remove Core Preset** for each core, then uninstall RetroArch from **Settings > Apps > Installed apps**. Delete the RetroArch folder in your user profile to remove configs and shaders.

Interactive version: checklist, feedback, related guides →

Free · no account needed · tracks your progress