Shader Presets

From Emulation General Wiki
Jump to navigation Jump to search

Shader Presets are combinations of one or more shaders. The Shader Chain which is a stack of shader passes each one pointing to a specific shader file.[1] There is a misconception about shaders; Generally, you really can't copy+paste shaders between two different programs even if they support same extension like .glsl, not unless they know how their shaders are structured and what kind of input they need and output they give.[2]

Before diving in;

Contents

RetroArch/Libretro[edit]

RetroArch is able to stack shaders to create a combined effect. These complex effects are saved with a special extension:

   .cpg for CG
   .glslp for GLSL
   .slangp for Slang

The shader presets can also have parameters. This means that you can tweak them to fit your needs.

Sonkun’s crt-guest-advanced-hd presets[edit]

 
ntsc preset Megadrive version

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.

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 your monitor type. These presets were designed to be used on these three resolution types only. Not OLED, 720p or other random resolutions, if you use it on any type of display besides those 3 standard displays Sonkun may not be able to help if you run into any issues. If they end up looking ok to you on your display regardless then game on. 64 shader presets to choose from per folder with 3 different phosphor types for USA, Japan and PAL that come in both color temp and multiple cable types to choose from included (representing 4 cable types to choose from: rf, composite, s-video and rgb and 3 composite types to choose from: standard, artifacts and Megadrive rainbow. Also S-Video presets includes Hyllian’s “sgenpt-mix multpass” shader to take care of checkerboard dithering and lite vertical line dithering)

Recommended to use with these shaders is 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. Also for NES cores Sonkun recommend changing the Palette setting. The two most popular cores are mesen and nestopia. For Mesen you should use the “Original Hardware (by FirebrandX)” setting, for Nestopia use the “NTSC hardware FBx” setting as Sonkun composite presets were designed with those pallets settings. Also with Mesen you should change both the top and bottom overscan settings to 8px to avoid harsh moire patterns on the screen. For Nintendo 64 mupen64plus-next core with Parallel-rdp settings enabled Sonkun also recommend changing the “crop overscan” setting to 8 to help reduce moire patterns that appear on the screen with that setting at default 0.

HSM's Mega Bezel[edit]

 
HSM's mega bezel intro animation (Can be customized and turned off)

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, the swiss-army-knife of visual simulation to enhance the retro game experience is ready for players.[3]

  • Auto-Generated Bezel around the tube area
  • Dynamic Reflections on the Bezel
  • Images can be added for background, LEDs, PVMs etc.
  • Easily scale the game screen, including integer scale
  • Crop edges of the the game image
  • Dual screen support for emulated systems like Nintendo 3DS (Emulated by Citra) or Nintendo DS (NDS)
  • And lots more
  • Also Runs on Xbox Series S, Xbox Series X and Steam Deck

Other notable presets for HSM project[edit]

These presets are tested and developed for use in conjunction with the HSM's Mega Bezel.

 
Duimon's Neo Geo Pocket/Color preset

Sony Megatron (HDR)[edit]

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 but some SDR screens do get bright enough in particular laptop screens. A DisplayHDR 1000 display will really have the head room to cope with some of the hgher end PVM’s etc.

Retro-Crisis-GDV-NTSC[edit]

It is based on Guest Advanced NTSC shader, which is authored by Guest R. All the presets were configured in sRGB at 4K display resolution on a 20" screen. Presets could potentially look worse on larger screens in some instances.

 
Koko-aio's Commodore 1084S monitor (Night)

Koko-aio[edit]

One of the main goal 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 develop it, where it perform with all the features enabled, when dealing with 240p content, on 1080p at resolution ad about 85/90fps.

Koko-aio is meant to be an all-in one package. It can be configured with many parameters, so that can be scaled to run on even on modest gpus while still developed to run with heavier presets on at least Haswell+ iGPUs (as in version 3.5, it reaches about 85fps with all features enabled When dealing with lowres content on 1920x1080 resolution). 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
  • Scanlines
  • Screenlines
  • RGB phosphors
  • RGB deconvergence
  • NTSC/PAL CVBS color bleeding
  • Aperture grille and slot mask.
  • Input signal glowing
  • Output signal glowing
  • Blooming
  • Gamma, contrast, saturation, luminance, color temperature adjustments
  • Black frame insertions through alternate blanking
  • Interlace flickering, forcing and emulation
  • Antialiasing
  • Curvature
  • Ambient lights
  • Vignette and Spotlight
  • Bezel (Thanks to HyperspaceMadness)
  • Background images
  • Full screen glowing
  • 3D rotation/tilt
  • Integer scaling
  • Background image Night mode
  • Support for backdrop images for BW game/CABs that use mirrors
  • NTSC emulation with selective artifacts smoothing
  • Temporal bloom
  • RF Noise
  • Dot matrix display emulation with grid, shadow and motion blur (gameboy mono)
  • Monochrome display “colorization”
  • TATE mode

Koko-aio fork for Arcade Artwork[edit]

 
Koko-aio fork for Arcade Artwork with HDR

Repository for game-specific Arcade Artworks by using the Koko-aio slang presets.

Successfully tested under MacOS, Windows and iPadOS. Currently the Koko-aio presets provides 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 is currently under steady development, thus it is a clear aim to stay in line with the upstream changes.

Main source of this artwork comes from John Merrit, who set a benchmark for realistic arcade artwork. Version 0.2 and following releases see 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. 0.4 release will also see usage of the new ambilight functionalities. See the list of new game presets in the each release notes.

Overlay/Bezel packages[edit]

These overlay/bezel packs shouldn't be confused with shader presets above. Most of these packs only comes with overlay and config files (.cfg and .png files) for 'RetroArch/config/mame or FinalBurn Neo' and 'RetroArch/overlays/arcade' directories.

Most of Orionsangel's bezels in one large pack (link in the description)

Back-Ups Arcade[edit]

 
Back-Ups Arcade's VS SMB overlay

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
  • Demo Screen: Informative intro video featuring the amazing Frank George!
  • Custom Controllers: Per game Xbox controllers and control schemes.
  • Smoking Options: Choose your smoking preference.
  • Screen Saver: From the amazing TAS Visuals.
  • Overlays: From Mr Retrolust, Orion’s Angel, Arsinvictus and Boz1978 himself.
  • Shaders: From Libretro’s very own amazing HyperspaceMadness & HSM.
  • Music Player: Very awesome tracklist thanks to my works apprentice Mikey.
  • Music Player (In Game): Lets you play music or ambient arcade sounds while in-game!
  • Fade Screens: Each game has a matching fade screen so you never leave your cab!
  • Loading Animations: Per game animated loading animations and sounds.
  • Animated Controllers: Based on the amazing Fercho’s animated overlays.

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.

For more information;

Main article: Frontend

ReShade[edit]

ReShade is a generic post-processing injector for games and video software developed by crosire. Similar to libretro, shader effects are saved with a special extension: ".fx", and again similar 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. Latest Duckstation release builds comes with ReShade .fx shader support.

Sony Megatron ReShade Port (HDR)[edit]

For using this preset you need AutoHDR add-on for ReShade.

CyberLab ReShade Death To Pixels Shader Preset Pack[edit]

Vasiliy.M.'s PCSX2 CRT[edit]

Demonstration

kyubus Retro CRT[edit]

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 Retro CRT[edit]

Demonstration
Mimics blurry, lightbleeding, uncalibrated inexpensive 8~90's CRT.

Notable shaders for using with ReShade Presets[edit]

See this section.

Special K[edit]

ShaderGlass[edit]

 
ShaderGlass demonstration

Overlay for running GPU shaders on top of Windows desktop (similar to WindowCast for Libretro).

Features
  • applies shader effects on top of any window on the desktop
  • includes RetroArch shader library covering: CRT monitor simulation, image upscaling, TV / VHS simulation, softening, denoising, blur, sharpen and many more
  • works with most emulators, retro platforms and pixel art editors including: DOSBox forks, xemu, PCSX2, FS-UAE, Altirra, ScummVM, VICE etc.
  • excellent companion for pixel art drawing showing shaded and/or aspect-ratio corrected preview
  • you can even use it on top of YouTube, Twitch or modern games
  • saving and loading profiles
  • multiple operating modes, including borderless fullscreen
  • can be captured by OBS (using Game Capture source)

WindowCast for Libretro[edit]

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.

 
Librashader demonstration

Librashader[edit]

Librashader is a complete reimplementation of the RetroArch slang shader pipeline that allows standalone emulators to easily and optionally implement support for RetroArch-style shaders and shader presets.

This effort is a complete reimplementation of a shader pipeline that should be compatible with all shaders in slang-shaders, including the preset parser, the shader preprocessor, and SPIR-V translation, as well as runtime implementations for Direct3D 11, OpenGL, and Vulkan. To be clear, librashader does not “rip out” the shader parts of RetroArch and just repackage it up, but is a complete reimplementation with a fully documented Rust API that exposes every part of the pipeline.

You can find librashader on GitHub.
Reddit thread: Has there been any interest in librashader support?
with v137 version, Ares emulator integrated librashader support thanks to this pull request.

Future[edit]

 
EmuVR rooms

Already here thanks to Virtual Reality game room simulation projects. A VR game room simulation provides a virtual customizable game room; within that room there are cartridges, CD/DVDs and VHS tapes with artworks (CD/DVD covers, cartridge/VHS labels etc.), arcade machines, VCD/DVD/VHS player, personal computers or home consoles connected to virtual CRT screens that the user can interact with as they would a real-life TV.

Main article: Virtual_reality#VR_game_room_simulations

See also[edit]

External Links[edit]