Koko-aio shader discussions and updates

@Starman99x @ynnad4

There you have it, I just broke it :smile:

…RF noise is available through the latest snapshot


Nice! This will look beautiful with the Exodus OLD CRT overlay:

Btw, I tried to replicate the LUT colors from guest-advanced through color temperature in koko-aio but it didn’t give the ntsc lut color I was hoping for, and it turned out that LUT colors are a sort of .png files, a bunch of shaders use them, try typing/searching for LUT in RetroArch/shaders and you’ll know what I mean. Maybe it won’t be difficult to include them idk.

Here’s how guest describes them in his readme file:

LUT Colors

The shader has two ways to simulating “CRT Colors”. LUT colors and CRT Color Profiles. LUT colors use lookup tables to transform the sRGB color profile to something more close to CRT colors. These LUTs come from varying sources, and the accuracy regarding CRT color simulation is a bit of an unknown, but at the least they provide some nice alternative color schemes which you may like.

1 Like

really appreciate it bud, awesome work around!


Static Parameters = extra speed

For those of you who don’t mind tinkering with text files and are in the need of some fps boost,
there is a new file in the shader tree, it is called config/config-user.txt

I’m not joking when I say that a complete edit of that file gave me a boost of 45%; I’ve seen my fps going from 110 to 160.

That file can contain every parameter supported by the shader.
Normally you would edit that parameters within Retroarch itself and see how the shader reacts to them, but by editing that file, instead, you will make those parameters static,and this is what will give you extra performances.

The downside of using this method is that every setting
you will write here, will be static and so that 
you will NOT BE ABLE RO MODIFY it "on-the-fly" in Retroarch anymore.
Lines have this format: #define PARAMETER VALUE
    * PARAMETER is the shader parameter as defined in config.inc
      (look for lines starting with #pragma there).
    * VALUE is the value you want to assign to that parameter.
      (it is the same you would assign to that within retroarch)

Notice, there is no equal sign, nor double quotes, so, eg:
    If you know that you will always use the bezel frame:
    #define DO_BEZEL 1.0

    If you know you'll never alter the contrast:
    #define CONTRAST 0.0

    If you know your curvature will never change:
    #define GEOM_WARP_X
  You can disable a line by erasing it or,
  since everything after "//" is ignored,
  by prepending "//", eg:

      // #define DO_BEZEL 1.0
  ...that's it, you just need to copy the values from the
  preset you like to the right setting here.

Just to understand this: The performance boost is derived from static parameters alone, relative to identical non-static settings?

1 Like

Yeah, the very same parameters, turned static.


This is crazy - and of course worth a try if you (like me) want to provide game-specific artwork - so why not also freeze the settings for performance?


Further news: The new Vulkan iOS driver runs blazingly fast on my iPad Air 3! The Koko-aio shader is a perfect match. With FinalBurn Neo, I am running incredible frame rates, and the shader adjusts perfectly when I rotate the iPad 90°. This is massive step forward!


Edit: Forgive me @kokoko3k for one further link to my dedicated blog entry, including a video teaser on YouTube:

Presenting my first release 0.1 under the forked Koko-aio shader with 21 arcade-game-specific presets: For Macs and iOS devices, the new Vulkan driver combined with the Koko-aio shader is a complete game changer - at least in my opinion :grin:.
Once more, most of the credits go to John Merrit, who did some brilliant arcade artwork. The Koko-aio shader and HDR under Vulkan let them shine even more. Some screenshots here as well:
More certainly to come, as the foundation lets you add further artwork with ease. Enjoy and game hard :space_invader:.

By following estefan3112 suggestions, support for backdrop images is in place, needs some testing. Instructions on how to enable it are in the docs.

Quick test here (don’t mind the monitor image, it just shows that you can overlay another image on top of everything). Bezel,reflections,ambient lights will most likely not work, but they should not be required since the very special nature of those cabs.


I updated my overlays again, they’re much more polished than before. I also fixed the wrong credits link in the text file. And included a new source.psd file if anyone wants to edit the design:

@kokoko3k I zipped everything and named it the same way you did on GitHub, so you can simply copy-replace everything, here’s the new zip link:


Wonderful, thank you :slight_smile:


Since I’m sure some of you are used to the way shaders used to look, I decided to add a bunch of presets named “***-classic_take.slangp” that uses the “good old way of doing things™”.

This essentially means that the scanlines will alter their weight according to the pixel brightness, assuming that typical “squeezed look” and that the slotmask is drawn straight on screen with all the good looking it brings, but alongside the moiree issues.

To mitigate, I decided to use a very low (not tall) slotmask:

The following is for direct comparison versus the other way of doing things:



Probably some of you will tell they look exactly the same, which would even be a good thing.

What do you think/prefer?


awesome work Koko.

considering how good the retro emulation is on xbox series s|x, are there any plans to make your presets compatible with the system?



Thanks, here’s the deal:

You/someone buy me an xbox, i make everything in my possibilities to make it work!

Jokes aside, what’s the real deal?I’m a bit ignorant for what concernes consoles.

Considering the Microsoft attitude, I can imagine it doesn’t support Vulkan, but koko-aio works on GLcore as well.

Doesn’t it support Opengl either?

Being myself a Linux user, those are the only options…

1 Like

hahahaa dale I’ll hit the lottery tnite and ship one out to you.

as far as supporting gl… would i take the koko-aio and drop in the shaders_glsl directory ? or how would tht work?

It should be enough to select GLcore as output driver and then choose a preset (?)

1 Like

when i set to gl it only allows to choose a preset from the shader_glsl folder and the koko-aio folder is only available in shader_slang folder

isn’t glcore available?

on xbox series S|X, only gl, d3d12 and d3d11