Skip to content

Shaders

nickybmon edited this page Apr 2, 2026 · 1 revision

Shaders

OpenEmu-Silicon includes a Metal-based shader engine that loads presets from the libretro/slang-shaders library — the same shader collection used by RetroArch. If you use RetroArch primarily for its shader support, OpenEmu-Silicon can likely cover that need with a better Mac-native UI.


How It Works

Shaders in OpenEmu-Silicon are powered by OpenEmu-Shaders, a Metal rendering framework that:

  1. Loads .slangp preset files from the libretro slang-shaders repository
  2. Transpiles the GLSL shader source to Metal Shader Language using glslang and SPIRV-Cross
  3. Executes the shader chain on the GPU using Metal — fully native on Apple Silicon, no translation layer

This means the shaders run natively rather than through an OpenGL or Vulkan compatibility layer.


Compatible Shader Formats

Format Compatible Notes
.slangp (slang presets) Yes Primary supported format
.slang (individual slang shaders) Yes Loaded by presets
.glslp / .glsl No Older RetroArch format — not supported
.cgp / .cg No Legacy Cg format — not supported

Download shaders: github.com/libretro/slang-shaders


Well-Known Shaders That Work

These are commonly used presets from the slang-shaders library that are known to work:

Shader Category What It Does
CRT-Royale CRT High-quality CRT simulation with scanlines, bloom, and phosphor mask
CRT-Geom CRT Classic curved CRT look
CRT-Lottes CRT Fast, well-regarded CRT by Timothy Lottes
Scanlines CRT Simple, lightweight scanline overlay
Dot Matrix LCD Game Boy / LCD dot matrix effect
xBR / xBRZ Upscaling Edge-preserving pixel art upscaler
HQx (hq2x, hq4x) Upscaling Classic smoothing upscaler
Super-xBR Upscaling Higher-quality xBR variant
FXAA Anti-aliasing Fast approximate anti-aliasing

This is not an exhaustive list. Most single-pass and many multi-pass slang presets work. Complex presets with many passes may have edge cases.


Shaders That May Not Work

Some shader presets push beyond what the transpiler currently handles:

  • Presets with a very large number of passes (10+) may fail or perform poorly
  • Shaders that rely on compute shader stages not exposed in the slang preset format
  • Presets that reference external LUT textures in non-standard paths

If a shader fails to load, OpenEmu will fall back to no shader without crashing.


How to Install and Use Shaders

  1. Download the slang-shaders repository (or a specific preset folder)
  2. In OpenEmu, open Preferences → Library
  3. While a game is running, go to Window → Shader (or use the HUD overlay)
  4. Select a .slangp preset file

Shaders are applied per-core and remembered between sessions.


Relationship to RetroArch Shaders

OpenEmu-Silicon and RetroArch both use the same upstream slang-shaders library. If you have a .slangp preset that works in RetroArch, there is a good chance it will work here too — the main difference is that OpenEmu-Silicon runs it through Metal rather than Vulkan or OpenGL.

You do not need RetroArch installed to use these shaders.


Reporting Shader Issues

If a specific shader preset fails to load or renders incorrectly, please open an issue:

Clone this wiki locally