This guide summarizes the official libretro documentation page on CRT shaders for RetroArch. It describes what these shaders attempt to reproduce and how the documented shader families differ in purpose, features and hardware demands. It does not cover installation steps, performance benchmarks or configuration walkthroughs beyond what the source states.
What CRT shaders do
CRT shaders attempt to reproduce aspects and characteristics of cathode ray tube displays with modern hardware. Most include some form of scanline effect and often a phosphor mask effect, and they typically apply some amount of blurring or blending. Some also add interlacing effects and/or faux barrel distortion, often called curvature.
Variations labeled "glow" or "halation" include a bloom effect that mimics the glow and/or internal reflections of a CRT.
Documented shader families
crt-aperture is designed to reproduce the look of a high-quality aperture grille CRT TV, such as a Sony PVM or Wega TV. The documentation notes it still looks fairly good at non-integer scales.
crt-blurpi is a lightweight shader built to run at full speed on Raspberry Pi hardware and on low-resolution screens of 640x480 or less. It renders scanlines that match the screen resolution rather than the game resolution to avoid aliasing and Moiré effects on low-res screens. It comes in sharp and soft flavors: the sharp variant is intended for use with integer scaling, and the soft variant otherwise.
crt-caligari produces a scanline and mask effect by controlling the height and width of each simulated pixel "spot".
crt-easymode is described as a popular shader with good performance and many features, including curvature and masks, and it looks quite nice even at non-integer scales. It also has a -Halation variant.
crt-frutbunn is a port of the "Another CRT Shader" shadertoy to RetroArch's shader format. It includes scanlines, curvature and vignetting.
crt-geom is described as the original CRT shader, still looking good even at non-integer scales, with many options for customization. Because of GPU improvements since its release, it now runs well even on very modest hardware. The CRT-cgwg-Fast variety is faster, CRT-Geom-Deluxe is slower with many more options, and CRT-Interlaced-Halation is another variant.
crtglow is a bold CRT effect that accentuates the rounded edges of scanlines. It comes in CRTGlow_Gauss and CRTGlow_Lanczos flavors named for the scaling algorithm used, plus a CRTGlow_Gauss_NTSC variant that includes NTSC composite signal and connection simulation.
crt-guest is a family of very attractive shaders with many features and options, described as an excellent option for users with powerful GPUs who like to tweak settings. CRT-Guest-Dr-Venom and its -2 version are similar but have slightly different settings available; -Fast lowers the requirements considerably, and -SM uses a different method of generating scanlines.
crt-hyllian is a family of attractive, advanced CRT shaders with relatively few options, suited to users who do not want to spend much time adjusting settings. The -3D variant includes a downsampling option that works with high-res content such as cores with increased internal resolution, and -Sinc uses a different scaling algorithm. The -Multipass version runs well even on very modest GPUs, while -Glow and -Curvature add those effects on top.
crt-lottes is ported from Timothy Lottes' "FixingPixelArt" shadertoy and is intended to look like a really good CGA arcade monitor with RGB inputs instead of NTSC. It has few options and looks good at default settings. The -Fast version is an updated version ported from a separate shadertoy, the -Multipass versions are faster versions of the base effect, and Fakelottes pairs the mask simulation code.
crt-mattias is a port of Mattias' CRT Emulation shadertoy, characterized by crawling, or scrolling, scanlines. NewPixie-CRT is an updated and extended shader from the same author that expands on many of the same ideas.
crt-nes-mini is a clone of the NES Mini's TV-style shader, which the documentation describes as really just some light scanlines.
Reference table · Scroll horizontally to see all columns.
| Shader family | Notable documented variants | Key documented trait |
|---|---|---|
| crt-aperture | — | Aperture grille CRT TV look; holds up at non-integer scales |
| crt-blurpi | sharp, soft | Lightweight; targets Raspberry Pi and 640x480-or-less screens |
| crt-caligari | — | Scanline/mask via simulated pixel spot size |
| crt-easymode | -Halation | Many features including curvature and masks; non-integer scaling |
| crt-frutbunn | — | Scanlines, curvature, vignetting; ported shadertoy |
| crt-geom | CRT-cgwg-Fast, CRT-Geom-Deluxe, CRT-Interlaced-Halation | Original CRT shader with many customization options |
| crtglow | CRTGlow_Gauss, CRTGlow_Lanczos, CRTGlow_Gauss_NTSC | Bold effect emphasizing rounded scanline edges |
| crt-guest | Dr-Venom, -2, -Fast, -SM | Feature-rich family for powerful GPUs |
| crt-hyllian | -3D, -Sinc, -Multipass, -Glow, -Curvature | Fewer options; -Multipass runs on modest GPUs |
| crt-lottes | -Fast, -Multipass, Fakelottes | CGA arcade monitor look with few options |
| crt-mattias | NewPixie-CRT | Crawling scanlines |
| crt-nes-mini | — | Light scanlines clone of NES Mini TV shader |
Sources & references
Content responsibility: FrameTinker editorial desk. Source authors and software maintainers are credited separately below; this is not a claim of hands-on testing.
Published .
RetroArch: crt — official gaming software documentation https://raw.githubusercontent.com/libretro/docs/master/docs/shader/crt.mdRetrieved Oct 17, 2026Something doesn’t match your setup?
Suggest a correction
