Shaders
RetroArch shader presets, CRT scanlines, LCD grids, etc.
RetroArch ships with hundreds of shaders that recreate CRT scanlines, LCD grids, NTSC artifacts, etc. ArchR enables them but defaults to off: A35 + Mali-G31 is tight, and naive multi-pass shaders will halve your framerate.
Try a built-in shader
Launch a game
Any libretro core. Standalones (PPSSPP, Flycast, etc.) have their own shader systems; this guide is for libretro/RetroArch.
Open the menu
MODE + X → Quick Menu → Shaders.
Set Video Shaders to ON
Then Load Preset → browse shaders_glsl/.
Pick a preset
Recommended starting points for the R36S 480p panel:
| File path | Use case |
|---|---|
shaders_glsl/handheld/lcd1x.glslp | LCD grid for GB / GBA / NDS |
shaders_glsl/handheld/lcd3x.glslp | Sharper LCD grid |
shaders_glsl/crt/crt-pi.glslp | Light CRT for arcade |
shaders_glsl/scanline/scanline.glslp | Just scanlines, ultra-cheap |
The preset applies immediately. Back out of the menu to play.
Save the preset for the system
In the Shaders menu, Save → Save Game Preset (just this game) or Save Core Preset (every game on this core) or Save Content Directory Preset (all games in this folder).
Per-game presets land in /storage/.config/retroarch/config/<core>/<game>.glslp. Per-core in /storage/.config/retroarch/config/<core>/<core>.glslp.
Build a custom multi-pass preset
The example below is the canonical "GBA real hardware" look, color-correct + LCD grid in two passes:
Open Shaders, change passes to 2
Quick Menu → Shaders → Shader Passes → 2.
Pass 1, color correction
Click pass 1 → browse to shaders_glsl/handheld/ → choose vba-color.glslp.
Pass 2, LCD grid
Click pass 2 → browse to shaders_glsl/handheld/ → choose lcd1x.glslp.
Apply
Hit Apply Changes.
Tune parameters
Shader Parameters is where each shader exposes its knobs. For this combo:
- Darken:
0.25 - Brighten Scanlines:
28.0 - Brighten LCD:
6.0
Save
Back at the Shaders menu → Save → set Simple Presets to off → Save Shader Preset As → name it (e.g. gba-real-hw).
The named preset shows up under Load Preset the next time, and is also selectable from ES → Game Settings → Per System Advanced Configuration → Shader Set.
Performance budget
The R36S has very little overhead for shader passes. As a rule of thumb on RK3326 with overclock OFF (1.4 GHz CPU + 650 MHz GPU):
| Tier | Ok? | Examples |
|---|---|---|
| 1 cheap pass | ✅ | scanline, lcd1x, vba-color |
| 1 expensive pass | usually ✅ | crt-pi, crt-easymode |
| 2 cheap passes | usually ✅ | gba-real-hw (vba-color + lcd1x) |
| 2 expensive passes | ⚠️ | crt-royale, crt-aperture-grille |
| 3+ passes | ❌ | most CRT-Royale variants |
Dreamcast / N64 / PSP cores already eat the GPU; even a 1-pass shader on top can drop you below 60 fps. Reserve fancy shaders for 8 / 16-bit cores.
Toggle Enable CPU Overclock if you want to try heavier shaders, see Overclock.
ROCKNIX-style shader sets via ES menu
ES exposes a shader-set picker without going into RetroArch:
ES → Game Settings → Per System Advanced Configuration → Shader Set → pick from the dropdown.
This applies the chosen shader to every game on that system. Useful as a quick toggle. Custom presets you saved earlier appear here too.