Shader presets: Difference between revisions
m →CRT |
|||
| (23 intermediate revisions by one other user not shown) | |||
| Line 1: | Line 1: | ||
= Shader presets | {|class="wikitable" style="text-align:center;width:100;line-height:2;font-size: 130%;" | ||
|- | |||
|colspan=4|Back to ↩[[Shaders, presets, and filters]] | |||
|- | |||
|[[Shaders and filters]] | |||
|[[Shader presets]] | |||
|[[Future of CRT simulation]] | |||
|[[Shaders on real CRTs]] | |||
|} | |||
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> | ||
| Line 5: | Line 14: | ||
{| class="messagebox" style="border: 1px solid #e00; background-color: #fff4f4; padding: 12px; margin-bottom: 20px; border-left: 10px solid #e00;" | {| class="messagebox" style="border: 1px solid #e00; background-color: #fff4f4; padding: 12px; margin-bottom: 20px; border-left: 10px solid #e00;" | ||
|Only popular, well-regarded shader presets are listed here. Specific .slangp presets were chosen for consistent comparison; related presets may work as alternatives. See the [[Future of CRT simulation]] page for more context, and please do not add individual shaders (.slang files) to this table — use the [[Shaders_and_filters]] page for that. | |Only popular, well-regarded shader presets are listed here. Specific .slangp presets were chosen for consistent comparison; related presets may work as alternatives. See the [[Future of CRT simulation]] page for more context, and please do not add individual shaders (.slang files) to this table — use the [[Shaders_and_filters]] page for that. | ||
Note that some of the shaders and filters listed below | Note that some of the shaders and filters listed below that included in the chain for certain shader presets are available as an enhancement/adjustment option — such as digital vibrance — in your GPU driver control panel or your digital [[Displays|display]] OSD. These can cause color clipping, exposure issues (from applying excessive digital adjustments to the image), and [[input lag]], so it's best to avoid using color or excessive image filters. You can, however, use an [[Displays|analog device/CRT]]'s OSD adjustments. Another good option is the RTX Dynamic Vibrance option (see [[Future of CRT simulation#AI-powered filters]]) to avoid color crushing, and on top of that, using an HDR device with [[High dynamic range#Inverse tone mapping|inverse tone mapping]]. | ||
Beyond the characteristics compared below, real CRTs exhibit other behaviors — beam spot asymmetry, brightness-dependent beam widening, dynamic phosphor saturation, interlaced field artifacts (e.g. line twitter), chroma/luma delay misalignment, dot crawl phase drift, analog signal ringing, glass diffusion and refraction, magnetic purity errors, and warm-up drift. These are generally niche, experimental, or impractical to simulate in real-time presets, and are listed for reference only. | Beyond the characteristics compared below, real CRTs exhibit other behaviors — beam spot asymmetry, brightness-dependent beam widening, dynamic phosphor saturation, interlaced field artifacts (e.g. line twitter), chroma/luma delay misalignment, dot crawl phase drift, analog signal ringing, glass diffusion and refraction, magnetic purity errors, and warm-up drift. These are generally niche, experimental, or impractical to simulate in real-time presets, and are listed for reference only. | ||
| Line 22: | Line 31: | ||
|- class="unsortable" | |- class="unsortable" | ||
| colspan="4" style="background-color:#f9f9f9; font-size:95%; padding:8px;" | | | colspan="4" style="background-color:#f9f9f9; font-size:95%; padding:8px;" | | ||
Every emulator operates under a strict, unyielding frame-time budget. Just as a game developer must rigorously optimize a commercial game engine to calculate, transform and draw assets within this window, a post-processing shader chain must be viewed as a secondary rendering pipeline executed entirely at the tail end of the frame. Each individual shader "pass" within a preset chain acts as an sequential layer of complex mathematical calculations, consuming precious GPU compute cycles and directly inflating total frame latency. Because the GPU is already taxed with reconstructing the original console's hardware graphics, layering demanding CRT or LCD simulation presets can easily exhaust the remaining hardware headroom. Minimizing this latency is important; excessive or unoptimized shader passes directly degrade emulation performance. | |||
Workload Classifications & Behavioral Expectations: | |||
* '''Low GPU Load:''' Isolated traits or superficial aesthetics without system-level modeling; few passes, minimal temporal buffers. | * '''Low GPU Load:''' Isolated traits or superficial aesthetics without system-level modeling; few passes, minimal temporal buffers. | ||
* '''Mid-Range GPU Load:''' Substantial modeling in several domains but lacks complete temporal or system-wide depth. Requires a modern mid-range GPU. | * '''Mid-Range GPU Load:''' Substantial modeling in several domains but lacks complete temporal or system-wide depth. Requires a modern mid-range GPU. | ||
| Line 203: | Line 214: | ||
=== CRT === | === CRT === | ||
==== [https://forums.libretro.com/t/sonkun-s-crt-guest-advanced-slot-mask-presets-thread/39091 Sonkun's crt-guest-advanced-hd presets] | {| class="wikitable" style="width:100%;" | ||
[[File:Sonkun megadrive.jpeg|thumb| | |- | ||
A mix of basic CRT attributes that invokes a nostalgic vibe with a modern twist, based on [https://forums.libretro.com/t/new-crt-shader-from-guest-crt-guest-advanced-updates/25444 @guest.r's CRT Advanced HD and NTSC shader] combined with a variation of [https://forums.libretro.com/t/dogways-grading-shader-slang/27148/442 @Dogway's grade shader]. | ! scope="col" style="width:30%;" | Preset Projects | ||
! scope="col" style="width:70%;" | Demonstration / Features & Description | |||
|- | |||
| '''[https://forums.libretro.com/t/sonkun-s-crt-guest-advanced-slot-mask-presets-thread/39091 Sonkun's crt-guest-advanced-hd presets]''' | |||
| [[File:Sonkun megadrive.jpeg|thumb|right|250px|NTSC preset, Megadrive version]] A mix of basic CRT attributes that invokes a nostalgic vibe with a modern twist, based on [https://forums.libretro.com/t/new-crt-shader-from-guest-crt-guest-advanced-updates/25444 @guest.r's CRT Advanced HD and NTSC shader] combined with a variation of [https://forums.libretro.com/t/dogways-grading-shader-slang/27148/442 @Dogway's grade shader]. | |||
There are 3 shader preset folders for 3 monitor types — 1080p, 1440p, and 4K — | There are 3 shader preset folders for 3 monitor types — 1080p, 1440p, and 4K — designed to be used on these three resolution types only. 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 (RF, composite, S-Video, and RGB). The S-Video presets also include [https://github.com/Hyllian Hyllian]'s "sgenpt-mix multipass" shader to handle [[dithering]]. | ||
* '''NES core settings:''' Change Palette setting. For Mesen use "Original Hardware (by FirebrandX)"; for Nestopia use "NTSC hardware FBx". Set Mesen overscan to 8px. | |||
* '''N64 (mupen64plus-next):''' Change "crop overscan" to 8 to help reduce Moiré patterns. | |||
|- | |||
[[File:HSM's mega bezel - intro.gif|thumb| | | '''[https://forums.libretro.com/t/mega-bezel-reflection-shader-feedback-and-updates/25512 HSM's Mega Bezel]''' | ||
| [[File:HSM's mega bezel - intro.gif|thumb|right|250px|HSM's Mega Bezel intro animation]] Started in July 2019 by [http://forums.libretro.com/u/HyperspaceMadness HyperspaceMadness], this swiss-army-knife of visual simulation creates real-time reflections on emulated display bezels.<ref>[https://www.libretro.com/index.php/retroarch-introducing-the-mega-bezel/ RetroArch – Introducing the Mega Bezel Reflection Shader]</ref> | |||
* Auto-generated bezel around the tube area with dynamic reflections | |||
* Auto-generated bezel around the tube area | |||
* Customizable background images, LEDs, PVMs, etc. | * Customizable background images, LEDs, PVMs, etc. | ||
* Game-screen scaling | * Game-screen scaling (including integer scale) and edge cropping | ||
* Dual-screen support for emulated systems like Nintendo 3DS or DS | |||
* Dual-screen support for emulated systems like | * Support for Xbox Series S/X and Steam Deck | ||
* Support for Xbox Series S | |||
'''Other notable presets developed for HSM's Mega Bezel:''' | |||
* [https://forums.libretro.com/t/cyberlab-mega-bezel-death-to-pixels-shader-preset-pack/35606/1 CyberLab Mega Bezel Death To Pixels] (Includes heavily recommended HDR-supported "Megatron 4K HDR presets") | |||
* [https://forums.libretro.com/t/thenamec-mega-bezel-packs-amiga-commodore-64-vic20-crtgaming-soon/31523 TheNamec Mega Bezel Packs] | |||
* [https://github.com/Duimon/Duimon-Mega-Bezel#installation-using-the-release-zip Duimon Mega Bezel Graphics] | |||
* [https://forums.libretro.com/t/zombs-mega-bezel-pack/39519 Zomb's Mega Bezel Pack] | |||
* [https://forums.libretro.com/t/soqueroeu-mega-bezel-tv-backgrounds/34301 SOQUEREU's Mega Bezel TV] | |||
* [https://forums.libretro.com/t/p3st-s-overlays-for-mega-bezel-shader-arcade-tv-s-and-more/39263 P3st´s Overlays for Mega Bezel] | |||
* [https://github.com/Vriom-grafisk/Vriom-20th-Century-Cathode Vriom 20th Century Cathode] | |||
|- | |- | ||
| | | '''[https://forums.libretro.com/t/sony-megatron-colour-video-monitor/36109 Sony Megatron (HDR)]''' | ||
'''Beam | | These presets/shaders rely heavily on the [https://www.rtings.com/monitor/tests/picture-quality/peak-brightness#our-tests luminance performance] of your display rather than your GPU. You will need a bright display, preferably DisplayHDR 600 (though some laptop SDR screens work). A DisplayHDR 1000 display provides the true headroom required for high-end PVMs. See [[Future of CRT simulation#Display Hardware Requirements]] for more information. | ||
|- | |||
| '''[https://forums.libretro.com/t/haris-1080p-shaders-presets-screenshots/43734 Hari's 1080p Shader Presets]''' | |||
* RGB phosphors | | A shader presets pack optimized strictly for native 24", 1080p desktop monitors kept fairly close (50–70 cm). Based on guest.r's shaders, it includes simple overlays to fill up the screen. Perfect as a starting point for native 1080p displays. | ||
|- | |||
| '''[https://github.com/RetroCrisis/Retro-Crisis-GDV-NTSC Retro-Crisis-GDV-NTSC]''' | |||
* | | Based on the Guest Advanced NTSC shader by guest.r. The main focus of the pack is 4K displays, though 1080p and 720p are supported. The "100" series of presets are designed to be 100% accurate, modeled after a Sony Trinitron KVM. | ||
* | |- | ||
* | | '''CRT Beam Simulator ports for Libretro''' | ||
* | | Includes '''[https://github.com/libretro/slang-shaders/blob/master/presets/crt-beam-simulator/crt-beam-simulator-fsr-sony-crt-megatron-hdr.slangp crt-beam-simulator-fsr-sony-crt-megatron-hdr.slangp]''' and [https://github.com/libretro/slang-shaders/blob/master/presets/crt-beam-simulator/crt-beam-simulator-crtroyale-ntsc-svideo.slangp crt-beam-simulator-crtroyale-ntsc-svideo.slangp]. | ||
|- | |||
| '''[https://github.com/libretro/slang-shaders/blob/master/crt/crt-guest-advanced-ntsc.slangp CRT-Guest-Advanced-NTSC for Libretro]''' | |||
| - | |||
|- | |||
| '''[https://github.com/libretro/slang-shaders/blob/master/crt/newpixie-crt.slangp CRT-NewPixie for Libretro]''' | |||
| Focuses heavily on stylized and cosmetic elements with very light performance demand. | |||
|- | |||
| '''[https://github.com/libretro/slang-shaders/blob/master/presets/crt-royale-kurozumi.slangp Kurozumi's CRT-Royale port]''' | |||
| - | |||
|- | |||
| '''[https://forums.libretro.com/t/crt-yah-a-new-shader-chain/48481/1 CRT-Yah!]''' | |||
| - | |||
|- | |||
| '''[https://github.com/libretro/slang-shaders/blob/master/crt/crt-consumer-1w-ntsc-XL.slangp crt-consumer-1w-ntsc-XL]''' | |||
| - | |||
|- | |||
| '''[https://forums.libretro.com/t/koko-aio-shader-discussions-and-updates/38455 Koko-aio] and [https://github.com/estefan3112/koko-aio-slang Koko-aio fork for Arcade Artwork]''' | |||
| [[File:Koko-aio-monitor-Commodore 1084S-Night.jpeg|thumb|right|250px|Koko-aio's Commodore 1084S monitor (Night)]][[File:Estefan3112's Koko-aio fork for Arcade Artworks.png|thumb|right|250px|Koko-aio fork for Arcade Artwork with HDR]] '''Koko-aio''' is an all-in-one package developed by [http://forums.libretro.com/u/kokoko3k kokoko3k] designed to be usable on integrated GPUs (targeting Intel Haswell+ achieving 85–90fps at 1080p with low-res content). It aims to provide users with "visual" parameters to make modern monitors look like CRTs without simulating intensive internal hardware physics. | |||
* '''Beam & phosphor:''' Scanlines, screenlines, RGB phosphors/deconvergence, aperture grille, slot mask, blooming, and full-screen glow. | |||
* '''Signal & color:''' NTSC/PAL CVBS color bleeding, RF noise, selective artifact smoothing, gamma/contrast/color-temp adjustments, and interlace flickering/BFI. | |||
* '''Geometry & display:''' Curvature, 3D rotation/tilt, integer scaling, antialiasing, and TATE mode. | |||
* '''Presentation & overlays:''' Bezels (via HyperspaceMadness), background images (with Night mode), backdrop images for B&W games, ambient lighting, and vignettes. | |||
* '''Specialty modes:''' Dot-matrix display emulation (Game Boy mono with motion blur) and monochrome display colorization. | |||
<br> | |||
'''Koko-aio fork for Arcade Artwork''' is a repository by [https://github.com/estefan3112 estefan3112] for game-specific arcade artwork using Koko-aio slang presets. Tested successfully under macOS, Windows, and iPadOS. | |||
It embeds game-specific artwork (from John Merrit and stunning 4K layouts from Ars Invictus) seamlessly and scales according to resolution, providing superior performance alongside advanced shader functions like bezel reflections, halos, and glow effects. | |||
|} | |} | ||
==== Overlay/Bezel packages ==== | ==== Overlay/Bezel packages ==== | ||
| Line 331: | Line 292: | ||
*[https://forums.libretro.com/t/4k-vertical-overlay-community-contributions/25247 ArsInvictus 4K Vertical Overlays] | *[https://forums.libretro.com/t/4k-vertical-overlay-community-contributions/25247 ArsInvictus 4K Vertical Overlays] | ||
*[https://retropie.org.uk/forum/topic/24427/my-realistic-arcade-overlays-for-retroarch-collection Orionsangel's Realistic Arcade Overlays] | *[https://retropie.org.uk/forum/topic/24427/my-realistic-arcade-overlays-for-retroarch-collection Orionsangel's Realistic Arcade Overlays] | ||
* | *{{YouTubeVideo|kxalOc78xws|Most of Orionsangel's bezels in one large pack (link in the description)}} | ||
===TFT LCD=== | ===TFT LCD=== | ||
{| class="wikitable" style="width:100%;" | |||
|- | |||
! scope="col" style="width:40%;" | Shader Preset / Link | |||
! scope="col" style="width:60%;" | Description / Notes | |||
|- | |||
| '''[https://git.libretro.com/libretro-assets/slang-shaders/-/blob/master/presets/pixel_transparency/pixel_transparency-lcd3x.slangp pixel transparency-lcd3x]''' | |||
| - | |||
|- | |||
| '''[https://git.libretro.com/libretro-assets/slang-shaders/-/blob/master/presets/pixel_transparency/pixel_transparency-lcd-grid-v2.slangp?ref_type=heads pixel transparency-lcd-grid-v2]''' | |||
| - | |||
|- | |||
| '''[https://git.libretro.com/libretro-assets/slang-shaders/-/blob/master/handheld/gameboy-color-dot-matrix-white-bg.slangp gameboy-color-dot-matrix-white-bg]''' | |||
| - | |||
|- | |||
| '''[https://git.libretro.com/libretro-assets/slang-shaders/-/blob/master/presets/handheld-plus-color-mod/lcd-grid-v2-gbc-color-motionblur.slangp?ref_type=heads lcd-grid-v2-gbc-color-motionblur]''' | |||
| - | |||
|- | |||
| '''[https://github.com/Duimon/Duimon-Mega-Bezel#installation-using-the-release-zip Duimon Mega Bezel Graphics]''' | |||
|<gallery position="center" captionalign="center" widths="160px" heights="120px"> | |||
Duimon's NGP-NGPC preset.jpeg|Duimon's Neo Geo Pocket/Color preset | |||
MelonDS DS libretro core - Duimon DS preset.png|Duimon DS preset - MelonDS DS | |||
DSi_emulation_with_Duimon%27s_DS_Preset_using_MelonDS_DS_libretro_core.webm|Duimon's DS Preset - DSi emulation using MelonDS DS libretro core and it's [https://github.com/JesseTG/melonds-ds?tab=readme-ov-file#streamlined-dsiware-installation Streamlined DSiWare Installation feature] | |||
SameBoy_libretro_core_with_original_GBC_BIOS.png|Duimon's GBC Preset using SameBoy libretro core with original GBC BIOS. | |||
MGBA_libretro_core_-_Game_Boy_Advance_Video_-_Shrek.png|Duimon GBA Preset using mGBA libretro core, [[Game_Boy_Advance_emulators#Game_Boy_Advance_Video|Game Boy Advance Video cartridges]]. | |||
</gallery> | |||
|} | |||
==[https://forums.libretro.com/t/back-ups-arcade/40172 Back-Ups Arcade]== | ==[https://forums.libretro.com/t/back-ups-arcade/40172 Back-Ups Arcade]== | ||
| Line 374: | Line 356: | ||
==[https://reshade.me/#download ReShade]== | ==[https://reshade.me/#download ReShade]== | ||
[[File:ReShade_Nintendo_Switch_preset.JPG|thumb|298px|[[# | [[File:ReShade_Nintendo_Switch_preset.JPG|thumb|298px|[[Shaders,_presets,_and_filters#Quick_reference|Switch Experience Preset]] using Eden emulator]] | ||
[[File:PSP_Experience_Preset.png|thumb|298px|[[# | [[File:PSP_Experience_Preset.png|thumb|298px|[[Shaders,_presets,_and_filters#Quick_reference|PSP Experience Preset]] using PPSSPP emulator]] | ||
ReShade is a '''generic post-processing injector''' for games and video software developed by [https://github.com/crosire crosire]. Similarly to libretro, [[#Notable_ReShade_shaders|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'''. | ReShade is a '''generic post-processing injector''' for games and video software developed by [https://github.com/crosire crosire]. Similarly to libretro, [[#Notable_ReShade_shaders|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'''. | ||
[[File:Azahar_-_3DS_Experience_Preset.JPG|thumb|298px|[[Shaders,_presets,_and_filters#Quick_reference|3DS Experience Preset]] using AzaharPlus emulator]] | |||
[https://github.com/Mortalitas/GShade/releases GShade] is fork of ReShade. | [https://github.com/Mortalitas/GShade/releases GShade] is fork of ReShade. | ||
* [https://www.mediafire.com/file/ | * [https://www.mediafire.com/file/xuqurkbobq0kodd SDTV Experience Preset] | ||
** This shader chain specifically tuned to recreate the authentic look of the [[Shaders,_presets,_and_filters# | ** This shader chain specifically tuned to recreate the authentic look of the [[Shaders,_presets,_and_filters#6th_and_7th_Generation_(PS2,_GameCube,_Xbox,_Wii,_Xbox_360)|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 [[Sound and audio#Ambient sounds simulation|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! | ||
<gallery position="center" captionalign="center" widths="320px" heights="240px"> | <gallery position="center" captionalign="center" widths="320px" heights="240px"> | ||
Blades_with_SDTV_Experience_Preset_-_Xenia_Edge.JPG|[[Xbox_360_emulators#Dashboard_and_apps|Blades dashboard emulation]] running in 480p, [[Shaders,_presets,_and_filters# | Blades_with_SDTV_Experience_Preset_-_Xenia_Edge.JPG|[[Xbox_360_emulators#Dashboard_and_apps|Blades dashboard emulation]] running in 480p, [[Shaders,_presets,_and_filters#Quick_reference|SDTV Experience Preset]] using Xenia Edge emulator. | ||
SDTV_Experience_Preset.webp|FIFA 06 gameplay running in 480p with the [[Shaders,_presets,_and_filters# | SDTV_Experience_Preset.webp|FIFA 06 gameplay running in 480p with the [[Shaders,_presets,_and_filters#Quick_reference|SDTV Experience Preset]] on the Xenia Edge emulator. | ||
</gallery> | </gallery> | ||
* [https://www.mediafire.com/file/92w2x9yf6ljn19g Early HD LCD Experience Preset] | |||
**This shader preset is designed to recreate the [[Shaders,_presets,_and_filters#Early_Fixed-Pixel_Era_(7th_Generation)|authentic look of seventh-generation HD capable console systems as they appeared on early HD LCD televisions]]. Instead of maximizing sharpness, it aims to preserve the original image characteristics and viewing experience of the Xbox 360 and PlayStation 3 era. If you prefer ultra-sharp visuals and dislike full-screen blur, this shader is probably not for you. In that case, you're better off simply increasing the internal resolution using the built-in upscaling options in RPCS3 or Xenia Edge. | |||
* [https://github.com/MajorPainTheCactus/SonyMegatron-ReShade Sony Megatron ReShade Port (HDR)] | * [https://github.com/MajorPainTheCactus/SonyMegatron-ReShade Sony Megatron ReShade Port (HDR)] | ||