Version 4.1 is up on github and should be available via online updater in Retroarch.
Hi guys, first post here. In the past I made a shader for FS-UAE (Amiga emulation), but since i found that retroarch has a pretty good support for whdload games, I ported it to slangp so that it can be used with other emulators too.
I’m not that expert with technical terms, but i’m fortunate enough to own an old 15khz slot mask crt monitor inside an arcade cab loaded with Advance mame and other old emulators, so I used it as a reference. Why using a shader, you may ask, instead of the almost “real thing™”?
Actually that thing is big, heavy and power hungry and since it is running on an old AthlonXP i expect it to break sooner or later and i’ll not have spare time to fix, that’s for sure. Also, i’ve finally got an awesome oled 4k tv and i think that with that amazing (low) pixel persistance and resolution, we can get pretty damn close to the “real thing™”
One of the main goal of this shader 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 I develop it, where it perform with all the features
enabled, when dealing with 240p content, on 1080p at resolution ad about 85/90fps.
Click to read 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 (Thank you HyperspaceMadness for allowing me to rip his automagically generated bezel!) https://github.com/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
Click to read relevant changes over 3.9
New:
-
Add a standalone/stripped down version for gameboy mono emulation only (4.1)
- Dot matrix emulation with grid shadow and motion blur (4.1)
- Allow to emulate monochrome display colorization (4.1)
- Add gameboy mono preset (4.1)
- Add TATE mode (4.1)
-
Add shinybezel and night presets examples
-
Implemented a fast 3D Tilt function
-
Allow to lower the bezel corner darkness
-
Optionally simulate Light diffusion on the bezel
-
Provide mix and add methods to colorize background/foreground images
-
Allow to force colorization of background and foreground images via ambient LEDs
-
Allow to colorize bezel via ambient LEDs
-
Add Nightify bezel function
-
Allow to configure Bezel roughness
-
Backdrop support can be enabled runtime
-
Add integer scaling
-
Allow to modify the content aspect/zoom/shift leaving the bezel unmodified
-
Allow to set specular reflection strength
Performance:
- Small performance hit due to wrap modes and mipmaps reintroduced (4.1: ~3% on haswell igp)
-
Performance increase measured for base benchmark (240p@60fps -> 1080p@121fps on Haswell Igp
- Code Cleanup
- Simplified scanline code
- Further use Vertex shader
- Simplified final_pass code
Changes/Fixes:
- Apply curvature later in the chain so that it is consistent whan inner zoom changes. (4.1)
-
HiDPI Modified vmask and darklines gap scaling ratio, see GAP_SIZE_PER_SCALE in config.inc
-
...koko-aio should be ready for 4k, but i cannot test due to lack of hardware.
-
docs update
-
Alternate blanking, blank bright colors less in [-1..0] range; works as usual in 0..1 range
-
Slightly tuned ntsc selective filter parameters
-
Preset tweaks
-
Better debanding
-
Curvature: apply a small dark border to the image when not drawing bezels
-
Slightly modified monitor texture specular reflections
- Fix slotmask type 3
- Halo is applied after scanline and the “apply over scanlines gap” does what it say.
- Scanline tickness mask is now morphed much better than before.
- Allow to just draw gaps in vmasks
- Allow to cut “Dolby ears” when using curvature
-
Reflections are better aligned
- Allow for higher flickering settings
Removed:
- Allow wrap mode in shader again (4.1)
-
Alternate blanking (BFI) is statically disabled
-
Ditch old reflection blur code and just use mipmaps to blur reflections.
-
Wrap texture mode is disabled statically
Useful links
- Make sure to read the docs!
- Main development done on this Github repo
- Stable releases should be available through Retroarch’s online updater
(shaders_slang/bezel/koko-aio/) or here. - Click here if you want to try the latest in-develompent shader and unpack the zip somewhere inside your -already in place- shader directory.
I do not ensure you it will work as expected nor that your cat will be safe. - More presets and additional artworks: koko repo || estefan3112 repo || Starman99x repo
- If you want to boost your fps and you don’t mind tinkering with text files, take a look to the file config.globals.inc in the shader folder and follow the instructions; on intel IGPs, I’ve seen fps boosted by 45%.
Please, tell me what you think, any comment is really appreciated.
monitor-Commodore_1084S-Night
monitor-slotmask-bloom-bezelwider - Arcade - Final fight
monitor-Commodore_1084S-wider - Amiga - ProjectX SE
tv-PAL-my-old - Master System - Trans Bot
tv-NTSC-1 - Genesis - Sonic 2
tv-NTSC-2 - Snes - Aladdin
tv-aperturegrille-bloom-bezel - Amiga - Leander
gameboy_mono_colorized.slangp - Gameboy mono - Super Mario Land