Koko-aio shader discussions and updates

Buuuuut, if i enable core resolution slotmask, it mitigates the glitches pretty well:

600p:

400p image

at less than 300p, it collapses

image

…don’t ask me how is possible that it doesn’t look like totally #?! on 400p, I don’t know.

@HyperspaceMadness Why are you so interested i those resolutions btw?

2 Likes

Wow, that is looking really great! The fact that it still looks ok at 400p is some kind of a magic!

It’s something that comes up periodically with the Mega Bezel since the tube us already smaller than the screen and limits using integer scale and this often causes nasty artifacts with moire & lcd having really uneven presentation which makes it too ugly to be usable.

2 Likes

Man, loving this ambilight effect. What preset are you using?

I like the fact that you maximize the vertical resolution. I typically set the games to run at next integer so the active area is bigger on my TV which is not very big (48" at 3m).

I might need to adapt the bezel to make it work with my own presets though.

This is all I get, cropped sides. I know the ambilight is working because I tweaked the zoom settings and could see the effect using “monitor-bloom-bezel.slangp”:

2 Likes

@Dogway Have you set retroarch aspect to “full” or “core provided”? try “full”

wide presets end with “bezelwider.slangp”, ie: monitor-bloom-bezelwider.slangp

2 Likes

Thanks! That did it. I was using custom as I do my own AR but with full it works fine now.

Great looking bezels, will try to implement them on my own personal presets. I guess copying the passes after in_glow_x.slang

2 Likes

koko-aio is very “tight”, so before trying to hack it, unless you’re familiar with shaders coding, I suggest you to try to replicate the look you’re after by using its parameter, i could assist you in that, or take a look to docs.md

2 Likes

Thank you, yes I have some experience, not a super expert though. I will try in the next few days.

2 Likes

Hi, these screens are taken from my smartphone used as a portable console when needed, using the monitor-bloom-slotmask-bezelwider presets, using slotmask 3 and activating FXAA. No other changes apart from the LoDPI value and the horizontal gap between triads set to 0, as suggested by Kokoko3k himself. As you can see the yield is practically perfect.

3 Likes

Whops, I’d say more than ‘some’, sorry for being dumb and not recognized your user :sleeping:

4 Likes

To keep you updated, I think I made my choice: I’ll try to implement every existing feature in this new way (low level phosphor grid) and finally ditch the old implementations if performance will stay at an acceptable level (good chance by now).

Looking forward to high resolution displays, it is much more flexible and being able to draw phosphors at core coordinates with scalable relative size, in theory it would even allow to finally curve them ‘by nature’. How they will look will depend solely on the output resolution.

I also like the fact that it will hopefully have less parameters to configure to achieve the same things and they will be less scattered around sections.

Speaking of superseeding, here’s an handy recap (maybe just for me,lol):
It can already replace the following features: rgb and rbg mask, bw mask, gap/no gap between triads (or pairs), green/magenta mask, slotmask, aperturegrille, scanlines, tate mode, interlacing.

What is missing: scanline minimum brightness, horizontal mask strength, the ability to turn off unneeded subsections to scale the performance,a lot of testing and debugging and the need to convert all of the presets sonthat they will look “at least” the same.

I’ll keep this post updated.

3 Likes

Love that 1084-S night bezel.

2 Likes

Yeah, thanks, it is the “nightify” function.
Speaking of that, I only wish I could find a simple way to keep that red led bright, but no idea so far :neutral_face:

3 Likes

I’m really excited to see where this goes!

I think the only thing lost by not using the viewport grid for the phosphors is the 100% sharp phosphors. But then again when you use a whole pixel for the black part of the slotmask/aperture grill it is visually quite big compared to the others and loses you a lot of brightness. I guess another thing would be that the phosphors would be different sizes depending on what the resolution of the incoming signal is, e.g. 240p vs 480p, and what happens when the incoming signal is high like 1920x1080

You could use a separate image with black and just the red led light, and add it additively, that’s how the Mega Bezel does it, but this adds another image…

5 Likes

Yes, but i have to implement everything, even viewport masks.

It can be done, i think, but i’m having troubles with 2px sized ones (green.magenta) due to rounding errors, probably.

2 Likes

I think we’ve feature parity between old and new implementation. Phosphors can reduce theirselves well at screen resolution without changing algorithm; slotmask/aperturegrille can do the same.
By nature, when they sould grow in width, (but have no room since there is no space left between them) they will simply blend themselves making the mask less evident and fading to the original color:

If one have an high dpi screen, he may choose to use the multiplier knob, while still staying at screen coordinates, to make room for phosphors and see they growing in width.
Being on 1080p, i can try that with nothing more than a tight gm mask, but I suppose that on higher dpi screens it would look much better.

Speaking of multipliers, to answer to your prevoius questions about slotmasks at core resolutions, the arguments are the same; if one have an high resolution display, it may prefer to use core coordinates and use the multiplier as a divider.

There are still many possibilities that need to be explored.
Eg: while you can still choose gm,gmx,rgb,rgbx,rbg,rbgx masks preset, you can freely draft your own. The following picture is a bit extreme, because i’ve set a manual mask of just 1px, so that rgb phosphors are naturally blended into a single one; I’ve also set them to shrink and grow between 0.2 and 1.0, drawing them on screen coordinates, multiplied by a factor of 2, this looks very good on my 1080p and as a side bonus, adds more contrast to the picture without loosing color informations, because the contrast itself is gained by drawing less due to to the low min width (0.2).
Note that i activated an option to avoid intercell bleeding, that’s why you see a kind of grid:

7 Likes

Can’t wait to get your next update. I try to understand the dynamics but basically I’m ignorant on the subject, but what I see is beautiful to the eye. I blocked everything waiting for the new version. Good job and thank you very much for what you do.

I know it could be scary at first, but having knobs at low level gives much more freedom and possibilities to customize the final result (and are fun to play with!).
Writing the documentation just now, i’ll try to be as much clear as possible including short examples of what i discovered it could be done.

-edit- docs.md updated with exhaustive (i hope) explainations.

3 Likes

Wow! This all sounds immensely cool :star_struck:

3 Likes

I think 4.1 will be the last release to carry old mask and scanline code.
In the development repo, i created another main preset called koko-aio-ng.slangp which is the parent of the preset under presets-ng directory, there is also docs-ng.md with updated documentation about the new features.

In this new “internal branch”, the old code has been ditched in favour of the new, and the shader speed is back to 4.1 levels (a bit more).

This to say, that if you want to play with updated features, you have to load a preset under presets-ng directory, but beware that they are not yet been upgraded, so the first thing you have to do after loading a preset from there is to activate low level phosphor grid emulation and configure it.

Strongly adviced to deeply read docs-ng.

3 Likes

Still playing around with the new phosphor settings/code…but, oh my goodness! Thank you so much for the work you have put into this.

5 Likes