{"id":3814,"date":"2026-07-31T14:00:00","date_gmt":"2026-07-31T12:00:00","guid":{"rendered":"https:\/\/retroplaynow.eu\/senza-categoria\/best-crt-shaders-for-retro-gaming\/"},"modified":"2026-08-10T14:37:14","modified_gmt":"2026-08-10T12:37:14","slug":"best-crt-shaders-for-retro-gaming","status":"publish","type":"post","link":"https:\/\/retroplaynow.eu\/it\/emulation\/best-crt-shaders-for-retro-gaming\/","title":{"rendered":"Best CRT Shaders for Retro Gaming: How to Make Emulation Look Authentic"},"content":{"rendered":"<p class=\"wp-block-paragraph\">A CRT shader is the single biggest visual upgrade you can make to an emulated retro game, and it costs nothing. It takes the sharp, sterile, pixel-grid image your monitor produces and applies the characteristics of a real cathode-ray tube: scanlines, phosphor glow, colour blending and, if you want, the subtle curvature of the glass. Done well, a shader turns emulation from a curiosity into something that looks like the game you remember. This guide covers how CRT shaders actually work, which presets in RetroArch are worth your time, how to install them, and how to pick one your hardware can run.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What a CRT Shader Actually Does<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A shader is a small program that runs on your graphics card and processes every frame before it reaches the screen. In RetroArch, shaders sit at the end of the video pipeline: the core renders the game, and the shader transforms that raw output into something that looks like it came out of a tube. The most common presets imitate scanlines, the dark gaps between the lines of a 240p image, but a good shader does far more than draw stripes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The reason this matters is that retro games were designed to be seen on a CRT, not on a modern panel. As I explained in my CRT guide, the 240p image uses roughly half the vertical lines of the display, and the gaps between them are part of the design: they smooth large areas of colour and give sprites the appearance of depth. When you play a NES or SNES game on an LCD without any shader, you are seeing pixels the way they were stored, not the way they were meant to look. The scanlines are not a flaw you tolerate; they are the resolution itself.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A well-made shader recreates the whole chain. It adds the scanline structure, but it also simulates the phosphor glow of the tube, the way colours bleed into each other, the slight masking pattern of the aperture grille, and sometimes the barrel distortion of the glass. That combination is what makes the image look natural rather than simply retro.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Why Your Emulator Looks Wrong Without One<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Emulators are designed for accuracy of logic, not accuracy of presentation. A core like Mesen or Beetle PSX reproduces the console behaviour down to the cycle, but it hands your graphics card a clean, perfectly aligned grid of pixels. That grid never existed on screen in the 1990s. Every pixel on a CRT was drawn with a decaying glow, and the phosphor blended one line into the next. Without a shader, you get an image that is technically accurate and visually wrong, which is why so many people try emulation, see a harsh pixel mess, and conclude that the games do not hold up.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What the Shader Is Recreating, Technically<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Three elements define the look of a CRT, and the best shaders model all three. The first is the scanline structure, the periodic dark lines that separate the drawn lines of the 240p image. The second is the phosphor pattern, the way each tube arranged its colour dots: shadow masks for most consumer sets, aperture grilles for Trinitrons, and slot masks in between, each giving a subtly different texture. The third is the display behaviour itself, the glow, the persistence and the slight convergence between the red, green and blue channels. When a preset like CRT Royale or CRT-Geom combines all three, the result is far closer to a real tube than a simple scanline overlay ever gets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Shaders vs Filters: Know the Difference<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">People use the words shader and filter interchangeably, and that causes confusion when settings do not behave as expected. A filter is a preset applied through RetroArch&#8217;s older scanline filter system: fixed effects like Scanlines, xBR or Super Eagle that run at set strengths and cannot be fine-tuned. A shader is the modern system, where a preset can chain dozens of individual shader passes, each with its own parameters, and the whole chain runs on your GPU in real time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The practical rule is simple: use shaders, not filters. The filter menu is a legacy feature, and modern shader presets produce dramatically better results with the same effort. Everything recommended in this guide uses the shader system.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Best CRT Shaders in RetroArch, Ranked<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">RetroArch ships with a large library of shaders, and the quality varies wildly. These are the presets I actually use, based on fifteen years of testing displays and upscalers, ordered from the one that looks the most authentic to the one you should use when your hardware is limited.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CRT Royale: The Gold Standard<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CRT Royale is the shader every other preset is compared to. It models the entire tube: shadow mask, phosphor glow, scanlines with true 240p line spacing, colour blending and even the aperture grille structure. On a 4K display with integer scaling, CRT Royale is breathtaking, the closest thing to a real CRT you can get without carrying forty kilograms of glass. The cost is performance: it is the heaviest shader in this list, and it wants a dedicated GPU. On a Raspberry Pi it will choke, but on any modern PC it is the first preset you should try.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CRT-Geom: Authenticity With Curvature<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CRT-Geom is the best all-round choice for most people. It recreates the geometry of the tube, including the subtle curvature of the glass and the slight barrel distortion at the edges, and it does so with a fraction of the performance cost of CRT Royale. There are variants like CRT-Geom-Hyllian and CRT-Geom-CRT, and all of them share the same strong default look. It is my recommendation for the first shader to enable: it looks authentic, it scales across resolutions, and it runs on hardware that cannot handle the heavyweight presets.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CyberLab Mega Bezel: Everything Plus the Frame<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">CyberLab Mega Bezel is the current king of all-in-one presets. It combines a full bezel around the screen, complete with the glass reflections and the curved tube, with a high-quality CRT simulation in the middle. The result is gorgeous, and it is the preset to use when you want the image to fill your monitor like a framed cabinet. The trade-off is complexity: the preset has many options, and configuring it well takes time. It is also demanding, so give it a real GPU.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Simple Presets: CRT Simple, CRT Easymode, Kurozumi<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Not everyone wants a full simulation, and not every device can run one. The simple presets give you the essential scanline look with almost no performance cost. CRT-Simple is a lightweight scanline shader that works everywhere, including on a Raspberry Pi and on Android. CRT-Easymode is a friendly step up with a softer, more calibrated look. CRT-Royale-Kurozumi is a slimmed-down version of CRT Royale that keeps much of the quality at a fraction of the cost, and it is the right middle ground when the full preset is too heavy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Handhelds: LCD Grids Instead of CRT<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Portable systems need a different treatment, because a Game Boy was never a CRT. The right shaders for the Game Boy, Game Boy Advance and similar systems imitate an LCD: a fine pixel grid, a slight glass reflection and the muted, low-contrast palette of the original screens. LCD3X is the go-to preset for Game Boy and Game Boy Color, and mGBA&#8217;s built-in LCD ghosting options handle the motion blur that defined the GBA&#8217;s screen. Using a CRT shader on a Game Boy looks wrong; using an LCD shader brings the handheld back to life.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead><tr><th>Preset<\/th><th>What it does<\/th><th>Best for<\/th><th>Performance cost<\/th><\/tr><\/thead>\n<tbody>\n<tr><td>CRT Royale<\/td><td>Full tube simulation: mask, phosphor, scanlines<\/td><td>4K displays, accuracy purists<\/td><td>High<\/td><\/tr>\n<tr><td>CRT-Geom<\/td><td>Scanlines plus tube curvature and geometry<\/td><td>The all-round choice on most hardware<\/td><td>Low to medium<\/td><\/tr>\n<tr><td>CyberLab Mega Bezel<\/td><td>CRT simulation inside a full bezel frame<\/td><td>Framed, cabinet-style setups<\/td><td>High<\/td><\/tr>\n<tr><td>CRT-Simple \/ Easymode<\/td><td>Essential scanlines, minimal processing<\/td><td>Raspberry Pi, Android, weak laptops<\/td><td>Very low<\/td><\/tr>\n<tr><td>CRT-Royale-Kurozumi<\/td><td>Slimmed CRT Royale look<\/td><td>Mid-range hardware<\/td><td>Medium<\/td><\/tr>\n<tr><td>LCD3X<\/td><td>Pixel grid and glass for handhelds<\/td><td>Game Boy, Game Boy Color<\/td><td>Low<\/td><\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">How to Install and Enable Shaders in RetroArch<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Enabling a shader in RetroArch is a two-step process: make sure the shader files are installed, then load a preset. The first step trips more people than it should, because RetroArch does not ship every shader out of the box. Open the main menu, go to Online Updater, and run Update GLSL Slang Shaders. On Vulkan and Direct3D 12, the same updater installs the Slang variants, which are the modern format. If you skip this step, the shader menu will look empty and you will wonder what you are doing wrong.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the shaders are installed, load a game and open the Quick Menu. From there, go to Shaders, then Shader Passes, and set the number to one. With a single pass, you can use the Load Preset option to pick a preset from the shaders folder. RetroArch automatically selects the correct file type for your driver, so loading a preset is all you need to do. The honest advice is to leave the individual parameters alone at first: the defaults of the presets above are good, and tweaking before you understand the basics usually makes things worse.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Integer Scaling: The Setting That Unlocks Shaders<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A shader is only as good as the image it receives, and that is where integer scaling enters the picture. Without it, the emulator scales the image by a non-integer factor, and the resulting uneven pixels blur the scanlines the shader draws. With it, every game pixel maps to a fixed number of screen pixels, and the shader has a clean grid to work with. In the RetroArch video settings, enable Video Scaling and set Integer Scaling to On, then set Aspect Ratio to the correct value for the system you are playing. On a 4K display, integer scaling plus a good shader is the modern equivalent of a PVM, and it is the combination I recommend in my guide to playing retro games on a modern TV.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Saving Your Shader Per Core<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once you find a preset you like, save it so you do not have to reapply it every session. In the Quick Menu, Shaders, the Save options let you store the preset globally, per core, or per game. The honest recommendation is per core: every system in RetroArch can have its own shader, so the NES runs CRT-Geom, the PlayStation 1 runs something softer, and the Game Boy runs LCD3X, all automatically. Global is a reasonable starting point, and per-game is for the rare title that needs special treatment.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Choosing a Shader for Your Console and Hardware<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The right shader depends on the system you emulate and the machine you run it on. A heavy preset that looks stunning on a gaming PC will turn a Raspberry Pi into a slideshow, and a shader that is perfect for the SNES can be the wrong fit for the PlayStation 1. These are the pairings I use in practice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For 8-bit and 16-bit systems, NES, SNES, Genesis, Game Boy and their peers, the palette and sprite work benefit from a strong scanline structure, so CRT-Geom or CRT Royale at high resolution are excellent. For the PlayStation 1, the 3D graphics have low polygon counts and heavy dithering, and a softer shader with more glow and less aggressive scanlines flatters them: CRT-Easymode or a mild CRT-Geom variant is the honest pick. For handheld systems, forget the CRT entirely and use an LCD grid. For arcade games, the Mega Bezel family shines, because the bezel recreates the look of sitting at a real cabinet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On the hardware side, the rule of thumb is that scanline-only presets run on almost anything, while full simulations need a real GPU. A Raspberry Pi 4 manages CRT-Simple and light presets comfortably. A phone handles the same low-cost options. Any desktop PC from the last ten years runs CRT-Geom, and the heavy presets like CRT Royale and Mega Bezel want a dedicated graphics card. When in doubt, start with CRT-Geom and drop down only if the framerate suffers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One more honest note about displays. A shader is designed for a specific resolution, and the same preset looks different on a 1080p monitor, a 1440p panel and a 4K OLED. The heavy presets really show their worth at 4K, where there are enough pixels to reproduce the mask and the phosphor structure faithfully. On a 1080p screen, the same preset can look overly soft, so do not judge a shader on one display. Lower the resolution expectations, keep integer scaling on, and choose a preset that flatters the panel you actually own rather than the one a screenshot on a forum was taken on.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is the best CRT shader for RetroArch?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For the most authentic image, CRT Royale. For the best balance of quality and performance on most hardware, CRT-Geom. For a framed cabinet look, CyberLab Mega Bezel. Start with CRT-Geom, and move up or down based on how it looks and runs on your machine.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Are CRT shaders legal to use?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Yes. Shaders are software that transforms the image; they contain no games and no copyrighted material. The legal question in retro gaming is always about the games themselves, and the answer is the same one I gave in my emulation and ROMs guide: you are on safe ground when you play games you actually own.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do CRT shaders add input lag?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Practically no. Shaders run on the GPU in real time and add a fraction of a millisecond of processing, which is far below what your display adds. If you are chasing the last drop of responsiveness, the culprits are the display&#8217;s game mode and any post-processing on the TV, not the shader.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Can my hardware run CRT shaders?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Almost certainly, if you pick the right preset. Light presets like CRT-Simple run on a Raspberry Pi and on phones. CRT-Geom runs on any half-decent desktop. The heavy presets, CRT Royale and Mega Bezel, need a dedicated GPU, and at 4K even a mid-range card can struggle with them. Start light and increase until the picture is where you want it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Do shaders work on consoles and Android?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">On Android, yes: the official RetroArch build includes shaders, and the light presets run well on modern phones. On Nintendo Switch and other homebrew-capable consoles, shaders are supported but the hardware is limited, so stick to the simple presets. On iOS, support depends on the driver, and results vary.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Make Emulation Look Like the Game You Remember<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The gap between emulation and the real thing was never about the games; it was about the display. A CRT shader closes most of that gap in a few minutes, with zero cost and no new hardware. Install the shader pack, enable integer scaling, load CRT-Geom, and you will see the difference in the first frame: the colours blend, the scanlines give the sprites depth, and the game finally looks the way it looked on the TV in your childhood.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start with a system you know well, set integer scaling, and try one preset at a time. If the image looks too dark, soften the mask. If the scanlines look too thick, lower them or switch to a lighter preset. The settings are reversible, the presets are free, and the payoff is the most convincing retro image you can get without owning a real tube. And if you ever want the real thing, my CRT guide tells you exactly what to look for.<\/p>","protected":false},"excerpt":{"rendered":"<p>The best CRT shaders for retro gaming: how they work, which RetroArch presets are worth using, how to install them, and what your hardware can actually run.<\/p>","protected":false},"author":4,"featured_media":3810,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ai_primary_source":"","visibility_scope":"","ai_summary":"","ai_intent":"","ai_related_resources":"","ai_priority":0,"ai_entity_type":"","ai_is_based_on":"","ai_citations":"","ai_mentions":"","ai_speakable_selector":"","ai_chunk_hints":"","footnotes":""},"categories":[91],"tags":[63,59,54],"ai_visibility":[],"class_list":["post-3814","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-emulation","tag-crt","tag-emulation","tag-retro-games"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/posts\/3814","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/comments?post=3814"}],"version-history":[{"count":2,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/posts\/3814\/revisions"}],"predecessor-version":[{"id":3912,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/posts\/3814\/revisions\/3912"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/media\/3810"}],"wp:attachment":[{"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/media?parent=3814"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/categories?post=3814"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/tags?post=3814"},{"taxonomy":"ai_visibility","embeddable":true,"href":"https:\/\/retroplaynow.eu\/it\/wp-json\/wp\/v2\/ai_visibility?post=3814"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}