This options allows you to apply shaders (or video filters) that can do things like make your tv/game look like it did back in the 80s and 90s.

On Batocera, several shader sets are available:

  • default: default is like “none” i.e. no shaders, no scanlines, but it provides Gameboy colorization out of the box. You can select Gameboy colorization through its own menu, but beware, mixing colorization and shaders rarely provides good results.
  • scanlines (Batocera 5.23+): the most realistic, for a 80s/90s look and feel. Most Batocera users have a LCD screen, not a CRT, so this mode enables scanlines to simulate the effects you get out of a big old TV set (but no curvature on the image). On handheld consoles, with LCD screens, you have no “scanlines” as the technology is fundamentally different. So, we provided a “grid” effect for old-style LCD rendering when you select “scanlines” and play a handheld game.
  • retro (Batocera 5.23+): a.k.a. “big pixel” mode, that adds a retro vibe to the output. Think the “indies” games you can find on Steam by dozens in 2019, overindexing on the 8-bit effect.
  • enhanced (Batocera 5.23+): adds blurring and anti-aliasing to provide a smoother output, more in line with what you expect from a video game nowadays.
  • curvature (Batocera 5.24+): provides scanlines + simulated screen curving, like good old CRT screens. For handheld consoles with LCD screen, no curvature as the screens were squared: this shader set provides a “zfast” filter.
  • flatten-glow (Batocera 5.25+): for CRT-based systems, it make the lights “glow”, this effect is particularly cool for Vectrex and old arcade games with a black background… but it might make you feel tipsy when used on colorful games! For handheld LCD systems, it “flattens” the screen so that the foreground and background melt together, like when you were playing those non-backlit screens.
  • zfast (Batocera 5.25+): an implementation of the zfast algorithm, with a variant for CRT screens (lighter scanlines, kind of a honeycomb effect) and one with no scanline for handheld LCD systems.

You can also select none to use no shader at all - it's the best option performance-wise.

Here is a screenshot where you can see the rendering effects provided by a few shader sets on a Sega Megadrive game (from left to right: none / scanlines / enhanced).

You can set your own shaders per system or per game, overloading the Batocera shader set selection. In order to do so, you can edit the /userdata/system/batocera.conf file and add, for example:

 snes-renderer.shader=vhs/ntsc-vcr
 mame-renderer.shader=crt/crt-pi-curvature
 nes["Xexyz (USA).zip"]-renderer.shader=vhs/ntsc-vcr

Don’t put the extension, just the name of the shader, without .glslp.

All shaders available on your Batocera system are available in /usr/share/batocera/shaders/ and its subfolders. What if you want to add your own shaders, that are not distributed with Batocera? Just add them in the folder /userdata/shaders/ and they will be accessible from this batocera.conf configuration point too.

Oh, and I know that you want to use vhs/ntsc-vcr everywhere now, right? m(

What you need to load in the batocera.conf file above is a .glslp file, which is kind of a “playlist” of .glsl files. It's a file that define a list of .glsl effects that need to be applied in order to render the effect expected (the list can simply be just one .glsl effect).

The .glsl files are unitary effects, coded in OpenGL, that can work with all platforms supported by Batocera. There are other shader formats supported by libretro, but they are not as widely compatible as .glsl.

Also, those shaders can be applied only on emulators that are based on retroarch/libretro. Standalone emulators cannot use that technique.

  • emulationstation/shaders_set.txt
  • Last modified: 6 weeks ago
  • by fishou