Shader presets: Difference between revisions
No edit summary |
|||
| Line 1: | Line 1: | ||
A shader preset is a combination of one or more shaders. The shader chain is a stack of shader passes, each one pointing to a specific shader file.<ref>[https://docs.libretro.com/guides/shaders/#shader-presets Libretro docs: Shaders]</ref> There is a common misconception about shaders; generally, you can't simply copy and paste shaders between two different programs even if they support the same extension, like .glsl, unless you know how their shaders are structured and what kind of input they expect and output they give.<ref>[https://forums.dolphin-emu.org/Thread-possible-to-create-a-ntsc-s-video-shader-for-dolphin?pid=450879#pid450879 Shonumi's comment about shader extensions and using with different programs]</ref> | A shader preset is a combination of one or more shaders. The shader chain is a stack of shader passes, each one pointing to a specific shader file.<ref>[https://docs.libretro.com/guides/shaders/#shader-presets Libretro docs: Shaders]</ref> There is a common misconception about shaders; generally, you can't simply copy and paste shaders between two different programs even if they support the same extension, like .glsl, unless you know how their shaders are structured and what kind of input they expect and output they give.<ref>[https://forums.dolphin-emu.org/Thread-possible-to-create-a-ntsc-s-video-shader-for-dolphin?pid=450879#pid450879 Shonumi's comment about shader extensions and using with different programs]</ref> | ||
Revision as of 20:14, 13 June 2026
A shader preset is a combination of one or more shaders. The shader chain is a stack of shader passes, each one pointing to a specific shader file.[1] There is a common misconception about shaders; generally, you can't simply copy and paste shaders between two different programs even if they support the same extension, like .glsl, unless you know how their shaders are structured and what kind of input they expect and output they give.[2]
Disclaimer
Before diving in
- For focusing on emulating CRT rather than mimicking it via post-processing, see Future of CRT simulation#Full Signal & Cable Emulation.
| Simulation Domain / Column | What It Measures & Evaluates / Definition | Classifications & Defined Values / Notes | Technical Criteria & Behavioral Expectations |
|---|---|---|---|
| SECTION 1: CRT Simulation Methodology | |||
|
Overall scope of interacting CRT subsystems and the relative real-time GPU workload required to run the pipeline:
| |||
| Phosphor Persistence & Decay | The temporal behavior of light fading, phosphorescent afterglow, and image retention over time. | * No: Instantaneous state changes.
|
Expect a realistic reduction in sample-and-hold motion blur on modern flat panels. True temporal models will exhibit realistic ghosting, trailing, or subtle color-channel separations during high-motion scenes. |
| Halation & Glow | Light scattering, internal glass reflections, and electronic diffusion around high-luminance areas. | * No: Hard, un-diffused pixel edges.
|
Simulates the blooming of electron beams striking dense phosphors and light bouncing within the CRT faceplate glass. Expect bright elements (like text on a dark background) to bleed naturally into adjacent dark pixels. |
| Beam & Scan Simulation | The shape, profile, and real-time behavior of the electron beam as it draws scanlines across the screen raster. | * None: Static presentation or flat raster mapping.
|
Expect dynamic scanlines that dynamically pinch, fatten, or change shape depending on how bright the underlying color is. True temporal beam simulation models the raster beam actively sweeping across the display, distinct from standard Black Frame Insertion (BFI). |
| Interlaced Field Simulation | The shader's ability to interpret, split, and accurately render interlaced (e.g., 480i) video signals. | * None: Progressive (240p/480p) output only; treats interlaced inputs as progressive frames.
|
When fed an interlaced signal, expect the characteristic line-flicker and combed motion artifacts characteristic of native CRT television sets, crucial for authentic 3D-era console emulation. |
| Convergence Errors | Misalignment of the internal red, green, and blue electron guns. | * No: Perfectly aligned alignment across the entire raster.
|
Simulates factory defects, aging components, or poor magnetic yoke calibration. Expect subtle color fringing at the edges of white objects, particularly near the physical corners of the screen. |
| Dynamic Power & Purity (Experimental) |
Simulated hardware instability, power supply fluctuations, deflection stress, and magnetic drift under dynamic current loads. | * None: Monolithic, perfectly stable voltage simulation.
|
Evaluates visual side effects of real CRT circuitry: Brightness pumping/High-voltage sag (screen dims under massive white loads), Raster breathing (image subtly expands/contracts based on scene brightness), Power-line hum (50/60 Hz screen ripple), and Magnetic purity drift (gradual color tinting over time). |
| Subpixel Mask Accuracy | The layout, structure, and accuracy of the simulated physical glass phosphor layout. | * None / Stylized RGB mask: Artistic or arbitrary screen patterns.
|
Evaluates structural modeling fidelity, not subjective beauty. Expect a high-accuracy mask to cleanly subdivide the output into distinct RGB elements under close inspection, provided the user display resolution (e.g., 4K or 8K) is sufficient to resolve it. |
| Analog Signal Artifacts | Simulation of legacy analog video transmission standard degradation and cable flaws. | * None: Pristine, digital-direct RGB simulation.
|
Expect authentic signal-phase degradation artifacts including dot crawl, chroma bleed (colors smearing horizontally), rainbowing on fine high-frequency patterns, and luma ringing/ghosting on harsh edges. |
| Curvature & Geometry | The simulation of a physical CRT's glass faceplate shape and electron beam trajectory distortion. | * None: Flat, edge-to-edge modern digital panel presentation.
|
Geometric distortion directly alters how scanlines scale across the display. Expect an accurate curve simulation to compress beam spacing and warp mask alignment realistically towards the screen edges without causing severe pixel aliasing. |
| Overlay/Bezel/Reflections | Simulation of the physical housing environment, plastic enclosure, and external room lighting interactions. | * None: Raw, unfiltered game frame output.
|
Accounts for non-intrinsic environmental factors. Expect procedural bezels to dynamically reflect the colors flashing on the game screen, alongside realistic scuffs, fingerprints, scratches, and ambient room glare on the "outer glass" surface layer. |
| Upscaling/Reconstruction | Spatial resizing and anti-aliasing methods used to map low-resolution source assets into high-resolution shader pipelines. | * None/frontend scaling: Relies completely on the emulator frontend to scale the base resolution.
|
Distinct from the CRT effect itself. High-fidelity upscaling ensures the core image assets are clean and artifact-free before the retro-CRT scanline and mask grids are applied on top. |
| HDR Support | Utilization of High Dynamic Range display architectures to surpass standard digital display brightness constraints. | * SDR only: Confined to standard 8-bit, 100-nit color limits.
|
Real CRTs were incredibly bright at a microscopic subpixel level. Native HDR shaders bypass SDR limitations, driving modern display panels hard enough to overcome the massive light loss caused by thick black scanlines and dense phosphor mask overlays. |
| SECTION 2: TFT LCD Methodology and Column Definitions | |||
|
In addition to the characteristics compared below, early LCD panels (passive-matrix, early TFT, and early mobile displays) exhibit other behaviors. These include extreme response-time asymmetry (rise vs fall), viewing-angle–dependent gamma and color shift, temporal dithering, inversion artifacts, weak black levels, backlight bleed and pixel voltage leakage. These characteristics are often panel-specific, difficult to measure accurately, or impractical to simulate fully in real time, and are therefore listed here for informational purposes only. | |||
| LCD Modeling Depth and Complexity | Simulation depth of the LCD display. | Based on number of passes (from the entire preset or shader chain), use of temporal buffers, float framebuffers, mipmaps, blur pyramids, and scaling stages. | Final display shader alone does not determine this value. |
| Pixel Response/Ghosting | Simulation of pixel response time, persistence, or frame-to-frame decay. | Only temporal feedback mechanisms (previous-frame sampling, decay, accumulation) count. | Emulator-side interframe blending or ghosting (e.g. Ares, NanoBoyAdvance) occurs prior to the shader pipeline and is not reflected in this table unless explicitly implemented within the shader preset itself. |
| Sample-and-Hold Behavior | Whether sample-and-hold behavior is explicitly simulated or implicitly assumed. | Most LCD shaders assume sample-and-hold by default. | Explicit strobing, impulse, or response shaping must be present to be marked as simulated. |
| Pixel Grid/Subpixel Structure | Accuracy and type of pixel or subpixel layout modeling. | Includes RGB/BGR layouts, aperture modeling, analytic integration, or grid reconstruction. | Simple sinusoidal masks are considered low accuracy. |
| Pixel Aperture/Transparency | Simulation of intra-pixel fill ratio or light transmission through pixel or subpixel apertures. | Models how much light passes through pixel areas rather than assuming fully opaque pixels. Used by shaders such as pixel_transparency-lcd3x. | Not implied by grid layout or color weighting alone. Dot-matrix masking or background compositing alone does not constitute pixel aperture or transparency modeling unless light transmission through pixel areas is explicitly simulated. |
| Color & Gamma Handling | How color space, gamma, and transfer functions are handled within the shader pipeline. | Covers internal color math such as linearization, de-linearization, panel-style gamma curves, tone shaping, saturation control, and re-encoding. | LUTs used purely as mathematical tools (e.g. gamma correction or contrast shaping) are included here and do not imply device-specific color accuracy. |
| Color Profile/Device Color Model | Whether the preset applies a device-specific color palette, LUT, or grading intended to reproduce the color characteristics of a particular handheld or LCD device. | This column reflects *intent*, not technique. | LUTs or grading are only counted here if they are meant to emulate a known device's color response (e.g. Game Boy Color hardware palettes). Generic color tuning, grading, or gamma adjustment without explicit device reference does not qualify. |
| Backlight & Black Level Modeling | Simulation of LCD backlight behavior, black floor, or contrast lifting. | Includes ambient lift, black level offsets, diffusion, or glow. | Does not include bezel or glass reflections. |
| Panel Artifacts | Simulation of panel-specific artifacts such as inversion patterns, dithering, or crosstalk. | Temporal or spatial artifacts must be intentionally modeled. | Noise used for reflections or grain does not count. |
| Viewing Angle Effects | Simulation of luminance or color shift based on viewing angle. | Includes angular falloff or directional response. | Most presets do not simulate this. |
| Overlay/Bezel/Reflections | Presence of non-display optical layers such as bezel, glass, reflections, or vignette. | These affect presentation and realism but are not part of the display's pixel structure itself. | Evaluates non-intrinsic environmental additions. |
| Upscaling/Reconstruction | How the preset reconstructs or scales the source image. | Includes ScaleFX, xBR-style reconstruction, multi-pass resampling, or reliance on frontend scaling. | Ensures uniform comparisons across scaling pipelines. |
| HDR Support | Whether the preset is designed for HDR output or luminance-linear workflows. | Most presets are SDR-only and assume display-referred gamma (≈2.2–2.4). | Tracks compatibility with modern high-headroom panels. |
RetroArch/Libretro
RetroArch is able to stack shaders to create a combined effect. These complex effects are saved with a special extension:
.cgp for CG .glslp for GLSL .slangp for Slang
The shader presets can also have parameters, which means you can tweak them to fit your needs.
CRT

A mix of basic CRT attributes that invokes a nostalgic vibe with a modern twist, based on @guest.r's CRT Advanced HD and NTSC shader combined with a variation of @Dogway's grade shader.
There are 3 shader preset folders for 3 monitor types — 1080p, 1440p, and 4K — so whichever monitor you have, you can choose the right shader resolution for it. These presets were designed to be used on these three resolution types only, not OLED, 720p, or other random resolutions. If you use them on any display besides those 3 standard types, Sonkun may not be able to help if you run into any issues. If they end up looking okay to you on your display regardless, then game on. There are 64 shader presets to choose from per folder, with 3 different phosphor types for USA, Japan, and PAL, included in both color-temperature and multiple cable-type variations (representing 4 cable types: RF, composite, S-Video, and RGB; and 3 composite types: standard, artifacts, and Megadrive rainbow). The S-Video presets also include Hyllian's "sgenpt-mix multipass" shader to take care of checkerboard dithering and light vertical-line dithering.
The recommended cables to use with these shaders are RF/composite for all systems from the 4th-generation consoles and below (NES, SNES, Genesis, Atari, TurboGrafx, etc.), S-Video for 5th- and 6th-generation consoles (PS1, Saturn, N64, Dreamcast, PS2, GameCube), and RGB for arcade. For NES cores, Sonkun also recommends changing the Palette setting. The two most popular cores are Mesen and Nestopia: for Mesen you should use the "Original Hardware (by FirebrandX)" setting, and for Nestopia use the "NTSC hardware FBx" setting, as Sonkun's composite presets were designed with those palette settings. Also, with Mesen you should change both the top and bottom overscan settings to 8px to avoid harsh Moiré patterns on the screen. For the Nintendo 64 mupen64plus-next core with Parallel-RDP settings enabled, Sonkun also recommends changing the "crop overscan" setting to 8 to help reduce Moiré patterns that appear with that setting at its default of 0.

The Mega Bezel Project started back in July 2019, when developer HyperspaceMadness was looking at experimental shaders creating real-time reflections on emulated display bezels. More than two years later, this swiss-army-knife of visual simulation to enhance the retro game experience is ready for players.[3]
|
Other notable presets for the HSM project
These presets are tested and developed for use in conjunction with HSM's Mega Bezel.
- CyberLab Mega Bezel Death To Pixels (Includes HDR-supported "Megatron 4K HDR presets," which are heavily recommended if you have an HDR-supported 4K display.)
- TheNamec Mega Bezel Packs: Amiga, Commodore 64, VIC20, CRTgaming
- Duimon Mega Bezel Graphics
- Zomb's Mega Bezel Pack
- SOQUEREU's Mega Bezel TV
- P3st´s Overlays for Mega Bezel
- Vriom 20th Century Cathode
-
Duimon's Neo Geo Pocket/Color preset -
Duimon DS preset - MelonDS DS libretro core. -
Duimon's DS Preset - DSi emulation using MelonDS DS libretro core and it's Streamlined DSiWare Installation feature. -
Duimon's GBC Preset using SameBoy libretro core with original GBC BIOS.
These presets/shaders are intended to rely heavily on the luminance performance of your display rather than the performance of your graphics card. As such, you will need a bright display, preferably DisplayHDR 600, though some SDR screens — laptop screens in particular — do get bright enough. A DisplayHDR 1000 display will really have the headroom to cope with some of the higher-end PVMs, etc. See the Future of CRT simulation#Display Hardware Requirements section for more information.
A shader presets pack for RetroArch and 1080p displays, based on guest.r's shaders for RetroArch. As the title says, these are the shader presets that Hari currently uses on a 24", 1080p desktop monitor kept fairly close (50–70 cm), with a few simple overlays to fill up the screen. These presets are made to be used on a 1080p native-resolution monitor. This "use case" can be very narrow, but maybe it can still be useful to someone! If you are playing on a native 1080p desktop monitor (or TV?), maybe this can help, or maybe it can be a starting point for your own presets.
It is based on the Guest Advanced NTSC shader, authored by guest.r. The main focus of the pack is 4K displays, but 1080p and 720p are also supported. The "100" series of presets are designed to be 100% accurate, based on a Sony Trinitron KVM.
crt-beam-simulator-fsr-sony-crt-megatron-hdr.slangp
Focuses on stylized and cosmetic elements, with very light performance demand.

One of the main goals of this one is to be usable on integrated GPUs. Granted, don't expect it to run on a Raspberry Pi, but the actual target is Intel Haswell — the one on which kokoko3k develops it — where it performs with all features enabled, when dealing with 240p content, at 1080p at about 85–90fps.
Koko-aio is meant to be an all-in-one package. It can be configured with many parameters, so it can be scaled down to run on even modest GPUs, while still being developed to run with heavier presets on at least Haswell+ iGPUs (as of version 3.5, it reaches about 85fps with all features enabled when dealing with low-res content at 1920×1080). While it is not meant to simulate the internal behaviour of CRT displays, it aims to give users "visual" parameters to make their monitors look similar.
| Features |
|---|
|
Beam & phosphor
Signal & color
Geometry & display
Presentation & overlays
Specialty modes
|

A repository for game-specific arcade artwork using the Koko-aio slang presets.
Successfully tested under macOS, Windows, and iPadOS. The Koko-aio presets currently provide superior performance on all reasonably powered desktops (including Macs), while providing enhanced shader functions, including bezel reflections, halo/glow effects, and many more. It embeds game-specific artwork seamlessly and scales according to resolution. The Koko-aio presets are currently under steady development, with a clear aim to stay in line with the upstream changes.
The main source of this artwork is John Merrit, who set a benchmark for realistic arcade artwork. Version 0.2 and following releases saw the inclusion of some breathtaking 4K artwork provided by Ars Invictus as well. Release 0.3 contains 52 new game-specific presets. With release 0.4 (WIP), estefan3112 would like to nightify all presets to the extent required; the 0.4 release will also make use of the new ambilight functionality. See the list of new game presets in each release note.
Overlay/Bezel packages
These overlay/bezel packs shouldn't be confused with the shader presets above. Most of these packs only come with overlay and config files (.cfg and .png files) for the 'RetroArch/config/mame or FinalBurn Neo' and 'RetroArch/overlays/arcade' directories.
- Mr. RetroLust's Lights Off
- ArsInvictus 4K Vertical Overlays
- Orionsangel's Realistic Arcade Overlays
Most of Orionsangel's bezels in one large pack (link in the description)
TFT LCD
- pixel transparency-lcd3x
- pixel transparency-lcd-grid-v2
- gameboy-color-dot-matrix-white-bg
- lcd-grid-v2-gbc-color-motionblur
- Duimon's GBA-ADV-LCD-GRID-Night.slangp

A frontend that showcase's various overlays with HSM's shader preset and much more by Boz1978. His aim was to make a AIO software package that seamlessly transitions between game selection and game with no ugly loading screens.
| Features |
|---|
|
Visuals & presentation
Audio
Per-game customization
|
Back-Ups Arcade relies of three pieces of software to make it work:
- Attract Mode Plus: The front end.
- RetroArch: The back end.
- RocketLauncher: The intermediary software used for game fades and pause menu.

ReShade is a generic post-processing injector for games and video software developed by crosire. Similarly to libretro, shader effects for ReShade are saved with a special extension: ".fx", and again similarly to libretro you can tweak them to fit your needs or create your own custom preset. For preset file location look for ReShade.ini and "CurrentPresetPath=", and it will tell you the location.
GShade is fork of ReShade.
- SDTV Experience Preset
- This shader chain specifically tuned to recreate the authentic look of the late analog/early digital television era as experienced on consumer standard-definition CRT televisions during the fifth to sixth-generation console period and into the early HD transition. Unlike presets focused on ≤4th gen console system's 240p-style scanline blending, excessive focus on bloom, phosphor and mask or other aspects of visual aesthetics, this chain prioritizes cable and signal simulation (primarily emphasizes visual characteristics typical of NTSC composite RCA connections and signals): bandwidth-limited composite artifacts, subtle signal noise, and gentle CRT-like behavior appropriate for standard-definition content. The preset also bundles optional tools for CRT audio simulation (e.g. aperture grille buzz, yoke hum, flyback whine etc). You'll need a reasonably modern GPU (GTX 960 or better) for this. An old office PC from 2010 isn't going to cut it for 480p system emulation plus the SDTV Experience preset. Currently, this preset is solely focused on 1080p displays. If you use a display other than 1080p, you will need to manually adjust the shader parameters yourself. Make sure to check out the readme.txt first!
-
Blades dashboard emulation running in 480p, SDTV Experience Preset using Xenia Edge emulator.
-
FIFA 06 gameplay running in 480p with the SDTV Experience Preset on the Xenia Edge emulator.
- Sony Megatron ReShade Port (HDR)
- For using this preset you need AutoHDR add-on for ReShade.
- CyberLab ReShade Death To Pixels Shader Preset Pack
- Vasiliy.M.'s PCSX2 CRT (backup)
- kyubus Retro CRT
Demonstration- Kyubus Retro CRT is a collection of Reshade and RetroArch retro CRT presets using existing shaders such as CRT-Guest, CRT-Royale and CRT-Lottes. ::These presets are mainly developed on a monitor resolution of 1440p but presets for 1080p and 4k monitors are included. To make the lower resolution shader display correctly RetroArch (or any emulator) integer scaling needs to be switched ON (Settings → video → scaling). GaussianBlur, LumaSharpen and Deband(range) are probably the first parameters you might want to adjust depending on the resolution of the content and your preferences. frankschoeman also recommend trying RetroArch shaders underneath such as "/xbr/super-xbr-fast.slangp"(Set Input and Output gamma to 1.0 in shader parameters) and "/cubic/catmull-rom-fast.slangp". In case those aren't available frankschoeman suggest setting the preset to one where GaussianBlur is enabled.
- AirCon's R
Demonstration- Mimics blurry, lightbleeding, uncalibrated inexpensive 8~90's CRT.
Special K
See PCGamingWiki: Special K page.

Overlay for running GPU shaders on top of Windows desktop (similarly to WindowCast for Libretro).
| Features |
|---|
|
Magpie is a lightweight window scaling tool that comes equipped with various efficient scaling algorithms and filters. Its primary purpose is to enhance game graphics and enable non-fullscreen games to display in fullscreen mode.
| Features |
|---|
|

WindowCast for Libretro/libretro-wincapture (formerly WGC Window Capture) Libretro core to capture the contents of another window for video processing. This is useful, for say, capturing the output of a standalone emulator that doesn't have advanced pp shader implementation (like xemu, Dolphin, PCSX2*) or a PC game running in a window and then processing it with RetroArch's shader stack. WindowCast for Libretro, ReShade or ShaderGlass are the only decent way to do this if the emulator doesn't have any advanced pp shader implementation.
This core uses software blit, and should support running with any RetroArch video driver (vulkan, d3d11, gl, etc). However, the method used for window capture is Windows 10/11-specific and requires a Direct3D 10/11 capable GPU. Audio or input is not handled, and it is expected that the game will be running in the background.