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.