Koko-aio shader discussions and updates

At last, release 1.0-NG is up on github and submitted to be included in official update channel.

Changelog is quite big this time:

Main changes from 4.1

  • Low level phosphor-grid which superseedes scanlines, vertical and horizontal mask. provides more features and is much more flexible by allowing to emulate common masks and freely draft new ones.

  • Add a new overmask preset to increase the whole visible mask (at the price of moire patterns on lower resolution).

  • Add a new Spark look punch to increase the vertical mask effect.

  • Allow to vertically stagger single phosphors to better emulate y-deconvercence.

  • Allow to change vertical and horizontal mask gamma.

  • Spot is now painted over the whole tube when using bezels and not just on the game content.

  • Improved reflection look.

  • Workaround for Flycast + Nvidia + Glcore + Ambient light not playing well (that was tough).

  • Ambient light scene changes are not instantaneous.

  • Selective NTSC artifacts blurring: inverted logic/workflow.

  • Switched to my own curvature function.

  • Luminosity tied zoom now has an hardcoded range.

  • Add an option to show “basal” unexcited phosphors grid.

  • Allow to use negative blurring parameters to switch from gaussian to box + (eventually) unsharp mask.

  • Input gain is not tied to glow feature anymore, moved to color correction section.

  • Prevent bloom from color shifting high tones due to color temperature.

  • Allow to pre-attenuate gain levels before applying halo. That way it does not change whan changing gain and may help in avoiding cascading effects when drafting presets.

  • Overhauled nightify function.

  • Allow to widen the ambient light effect without pushing led power

  • Allow to set virtual led position.

  • New ambient light “immersive” preset.

  • Now ambient light bezel and/or background image colorization can use two blend modes, multiply and add (see foggy parametter)

  • New active (not used because prone to change) parameter to clear dot masks betweeb scanlines (dedot).

  • Ambient light does not depend on color/brightness corrections anymore, set it (once) and forget.

  • Debanding is now applied on green component only.

  • Ported all old preset to new code.

  • Made new presets to show different masks possibilities.

  • Experimental delta render to save on battery powered devices which only render zones of the screen that has been changed Statically disabled.

  • Allow to set minimum lines to detect interlaced content by runtime parameter.

  • Add overlay-powered handhelds presets for: Gamegear,Gameboy Advance, Gameboy mono and Gameboy mono pocket.

  • More colorful Ambient lights.

  • Dot Matrix strength has now an “auto” parameter that adapt the grid steepness to the viewport size to mitigate glitches.

10 Likes

I found mask type 2 works the best. In most games I’m not seeing it only when there is a solid color and higher contrast but with mask 2 it looks like fine and the mask still looks the same to me. Thank you

1 Like

Nice. Looking forward to trying out the new goodies. Been using the slotmask bloom version a lot lately

1 Like

Spectacular work, I’m especially loving your NG TV presets, they’re perfect. Thank you with all my heart !

1 Like

“Hello, great job! However, I have a problem. Before, I could put games like 1941 in vertical mode, but now I can’t do it anymore. I forced the TATE, but I can’t get the vertical mode. I checked MAME’s options, I tried with the ‘libertro’ option and the ‘internal’ option, but it didn’t work either.”

What do you mean? This is Mame 2003 plus:

I noticed tate mode has been left disabled in some presets, but setting it to auto works as intended here.

Retroarch 1.16.0 FBNeo

1 Like

Tate mode just selects how scanlines are drawn; vertical or orizontal, but does not rotate the screen, it never did that.

I have not yet installed retroarch 1.16, but I think it depends on the core or on the new retroarch, but koko-aio never rotated the screen.

Do you see different behaviour with older koko-aio? It is unlikely.

2 Likes

Ok, I understand that it works differently than HSM Mega Bezel.

@bactino Can you share the preset with which it worked for you?

Just downloaded 1.16 with default shipped configuration, and finalburn neo + 1942 is vertical. Maybe some customization made on your side?

PS: setting vertical mode on in core options actually makes the game horizontal, go figure, so that goes to horizontal for me.

@bactino: just tried mame + 1942 as well and with vanilla config, it is correctly vertical on my side, no configuration needed.

The configuration I have in RetroArch is the one recommended in HSM Mega Bezel.

I suspected that, but for rotation related things, koko-aio does not need any change in config because it guesses the rotation by itself and if you rotate the game prior of that by using the retroarch options, that guess would not work.

1 Like
shaders = "17"
shader0 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/colortools_and_ntsc_pass.slang"
filter_linear0 = "false"
wrap_mode0 = "mirrored_repeat"
mipmap_input0 = "false"
alias0 = "colortools_and_ntsc_pass"
float_framebuffer0 = "false"
srgb_framebuffer0 = "false"
scale_type_x0 = "source"
scale_x0 = "1.000000"
scale_type_y0 = "source"
scale_y0 = "1.000000"
shader1 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/flick_and_noise.slang"
filter_linear1 = "false"
wrap_mode1 = "mirrored_repeat"
mipmap_input1 = "false"
alias1 = "flick_and_noise_pass"
float_framebuffer1 = "false"
srgb_framebuffer1 = "false"
scale_type_x1 = "source"
scale_x1 = "2.000000"
scale_type_y1 = "source"
scale_y1 = "2.000000"
shader2 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/fxaa.slang"
filter_linear2 = "true"
wrap_mode2 = "mirrored_repeat"
mipmap_input2 = "true"
alias2 = "FXAA_pass"
float_framebuffer2 = "false"
srgb_framebuffer2 = "false"
scale_type_x2 = "source"
scale_x2 = "1.000000"
scale_type_y2 = "source"
scale_y2 = "1.000000"
shader3 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/shift_and_bleed.slang"
filter_linear3 = "true"
wrap_mode3 = "mirrored_repeat"
mipmap_input3 = "false"
alias3 = "shift_and_bleed_pass"
float_framebuffer3 = "true"
srgb_framebuffer3 = "false"
scale_type_x3 = "source"
scale_x3 = "1.000000"
scale_type_y3 = "source"
scale_y3 = "1.000000"
shader4 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/in_glow_x.slang"
filter_linear4 = "true"
wrap_mode4 = "mirrored_repeat"
mipmap_input4 = "false"
alias4 = "in_glow_pass_x"
float_framebuffer4 = "true"
srgb_framebuffer4 = "false"
scale_type_x4 = "source"
scale_x4 = "1.000000"
scale_type_y4 = "source"
scale_y4 = "1.000000"
shader5 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/in_glow_y.slang"
filter_linear5 = "true"
wrap_mode5 = "mirrored_repeat"
mipmap_input5 = "false"
alias5 = "in_glow_pass"
float_framebuffer5 = "true"
srgb_framebuffer5 = "false"
scale_type_x5 = "source"
scale_x5 = "1.000000"
scale_type_y5 = "source"
scale_y5 = "1.000000"
shader6 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/halo_x.slang"
filter_linear6 = "true"
wrap_mode6 = "clamp_to_edge"
mipmap_input6 = "false"
alias6 = "halo_pass_x"
float_framebuffer6 = "true"
srgb_framebuffer6 = "false"
scale_type_x6 = "source"
scale_x6 = "1.000000"
scale_type_y6 = "source"
scale_y6 = "1.000000"
shader7 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/halo_y.slang"
filter_linear7 = "true"
wrap_mode7 = "clamp_to_edge"
mipmap_input7 = "false"
alias7 = "halo_pass"
float_framebuffer7 = "true"
srgb_framebuffer7 = "false"
scale_type_x7 = "source"
scale_x7 = "1.000000"
scale_type_y7 = "source"
scale_y7 = "1.000000"
shader8 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/avglum_pass.slang"
filter_linear8 = "true"
wrap_mode8 = "mirrored_repeat"
mipmap_input8 = "false"
alias8 = "avglum_pass"
float_framebuffer8 = "false"
srgb_framebuffer8 = "false"
scale_type_x8 = "source"
scale_x8 = "0.500000"
scale_type_y8 = "source"
scale_y8 = "0.500000"
shader9 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/reflection_blur_pre.slang"
filter_linear9 = "true"
wrap_mode9 = "clamp_to_border"
mipmap_input9 = "false"
alias9 = "reflected_blurred_pass_pre"
float_framebuffer9 = "false"
srgb_framebuffer9 = "false"
scale_type_x9 = "source"
scale_x9 = "1.000000"
scale_type_y9 = "source"
scale_y9 = "1.000000"
shader10 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/reflection_blur.slang"
filter_linear10 = "true"
wrap_mode10 = "mirrored_repeat"
mipmap_input10 = "true"
alias10 = "reflected_blurred_pass"
float_framebuffer10 = "false"
srgb_framebuffer10 = "false"
scale_type_x10 = "source"
scale_x10 = "1.000000"
scale_type_y10 = "source"
scale_y10 = "1.000000"
shader11 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/bloom_pass_1.slang"
filter_linear11 = "true"
wrap_mode11 = "mirrored_repeat"
mipmap_input11 = "false"
alias11 = "bloom_pass_1"
float_framebuffer11 = "false"
srgb_framebuffer11 = "false"
scale_type_x11 = "source"
scale_x11 = "1.000000"
scale_type_y11 = "source"
scale_y11 = "1.000000"
shader12 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/bloom_pass_2.slang"
filter_linear12 = "true"
wrap_mode12 = "clamp_to_edge"
mipmap_input12 = "false"
alias12 = "bloom_pass_2"
float_framebuffer12 = "false"
srgb_framebuffer12 = "false"
scale_type_x12 = "source"
scale_x12 = "0.500000"
scale_type_y12 = "source"
scale_y12 = "0.500000"
shader13 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/bloom_pass_3.slang"
filter_linear13 = "true"
wrap_mode13 = "clamp_to_edge"
mipmap_input13 = "false"
alias13 = "bloom_pass_3"
float_framebuffer13 = "false"
srgb_framebuffer13 = "false"
scale_type_x13 = "source"
scale_x13 = "1.000000"
scale_type_y13 = "source"
scale_y13 = "1.000000"
shader14 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/bloom_pass_4.slang"
filter_linear14 = "true"
wrap_mode14 = "mirrored_repeat"
mipmap_input14 = "false"
alias14 = "bloom_pass_final"
float_framebuffer14 = "true"
srgb_framebuffer14 = "false"
scale_type_x14 = "source"
scale_x14 = "1.000000"
scale_type_y14 = "source"
scale_y14 = "1.000000"
shader15 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/ambi_temporal_pass.slang"
filter_linear15 = "true"
wrap_mode15 = "clamp_to_border"
mipmap_input15 = "false"
alias15 = "ambi_temporal_pass"
float_framebuffer15 = "true"
srgb_framebuffer15 = "false"
scale_type_x15 = "viewport"
scale_x15 = "0.050000"
scale_type_y15 = "viewport"
scale_y15 = "0.050000"
shader16 = "shaders_slang/bezel/koko-aio-slang-NG-1.0/shaders/final_pass.slang"
filter_linear16 = "true"
wrap_mode16 = "mirrored_repeat"
mipmap_input16 = "false"
alias16 = "final_pass"
float_framebuffer16 = "false"
srgb_framebuffer16 = "false"
scale_type_x16 = "viewport"
scale_x16 = "1.000000"
scale_type_y16 = "viewport"
scale_y16 = "1.000000"
DO_CCORRECTION = "1.000000"
LUMINANCE = "0.200000"
GAMMA_OUT = "0.500000"
DO_SHIFT_RGB = "1.000000"
OFFSET_STRENGTH = "0.250000"
SHIFT_R = "-20.000000"
SHIFT_G = "1.000000"
SHIFT_B = "20.000000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.950000"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "2.000000"
IN_GLOW_BIAS = "0.000000"
TATE = "2.000000"
DO_VMASK_AND_DARKLINES = "1.000000"
RGB_MASK_STRENGTH = "1.000000"
VMASK_USE_GM = "1.000000"
VMASK_GAP = "1.000000"
DARKLINES_STRENGTH = "0.000000"
DO_SCANLINES = "1.000000"
SCANLINE_MIN = "0.200000"
SCANLINE_MAX = "0.700000"
DO_HALO = "1.000000"
HALO_POWER = "0.380000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.800000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.500000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.420000"
GEOM_WARP_Y = "0.470000"
GEOM_CORNER_SMOOTH = "400.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "-0.014000"
BEZEL_FRAME_ZOOM = "0.170000"
BEZEL_R = "-0.190000"
BEZEL_G = "-0.190000"
BEZEL_B = "-0.190000"
BEZEL_CON = "2.180000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "5.000000"
AMBI_OVER_BEZEL = "0.200000"
DO_VIGNETTE = "1.000000"
V_SIZE = "2.700000"
V_POWER = "1.050000"
DO_SPOT = "1.000000"
S_POSITION = "194.000000"
textures = "monitor_body_curved;monitor_body_straight;bg_under;bg_over;backdrop"
monitor_body_curved = "shaders_slang/bezel/koko-aio-slang-NG-1.0/textures/monitor_body_curved.png"
monitor_body_curved_linear = "true"
monitor_body_curved_wrap_mode = "clamp_to_edge"
monitor_body_curved_mipmap = "true"
monitor_body_straight = "shaders_slang/bezel/koko-aio-slang-NG-1.0/textures/monitor_body_straight.png"
monitor_body_straight_linear = "true"
monitor_body_straight_wrap_mode = "clamp_to_edge"
monitor_body_straight_mipmap = "true"
bg_under = "shaders_slang/bezel/koko-aio-slang-NG-1.0/textures/background_under.png"
bg_under_linear = "true"
bg_under_wrap_mode = "mirrored_repeat"
bg_under_mipmap = "true"
bg_over = "shaders_slang/bezel/koko-aio-slang-NG-1.0/textures/background_over.png"
bg_over_linear = "true"
bg_over_wrap_mode = "mirrored_repeat"
bg_over_mipmap = "true"
backdrop = "shaders_slang/bezel/koko-aio-slang-NG-1.0/textures/boothill.jpg"
backdrop_linear = "true"
backdrop_wrap_mode = "mirrored_repeat"
backdrop_mipmap = "true"

![1941-230929-192053|690x388](upload://U614OfIFQwn1WL0mrz1gjIqCT3.jpeg)

I will make you a video so it will be easier https://youtu.be/bY7vRHLj0j4 everything is up to date on my retroarch I even did a clean install

good little update the problem is with MAME current I just used MAME 2003 the problem is solved

1 Like

Hey, these all look so nice but I am so confused on where to place the “koko-aio-slang-main” and “koko-aio_packs” folders. It looks like some of these presets are calling ofr resources that isn’t where it is looking, so it is throwing the failure to load error. Would you please be kind enough, @kokoko3k , to tell me where each folder belongs and the correct structure (like in the “\path\to\retroarch\shaders\more\shaders” format? Thank you and I am sorry you need to hold my hand with this. I swear, I am not always this competent!

Excellent work, I really like the work you have done and what a good update. Now it’s time to update the Duimon presets https://github.com/kokoko3k/koko-aio-slang-presets-and-overlays/tree/main/Duimon

2 Likes

The shader update to NG is available via official reteoarch update, so just do the normal update process and select a preset from bezel/koko-aio.

Where koko-aio_packs come from btw?

edit

Ah, gotcha, those from @starman99x need to be updated by him to point to new folder structure, so broken atm.

Just noticed that retroarch update process does not clean the folder from old files.

As a result, after the update, bezel/koko-aio is a bit messy, because contains a mix of 4.1 and ng versions. Both still works, but new stuff (and old stuff ported to new code) live in subfolders now, all the extra stuff is useless and the whole folder should look like this:

To cleanup, delete bezel/koko-aio folder and run the update process again, maybe there is another way @hunterk?

1 Like

Hi everyone. I’ll update my packs asap.

2 Likes

hello I had a question I wanted to play The Ninja Warriors but the screen remains only in 4:3 is it possible to create 3 screens with your work?

1 Like