Koko-aio shader discussions and updates

Couldn’t you add an RRBBGGX horizontal mask (~300TVL at 4K) for (most) WOLED users?

I’m afraid not; the way it handles the mask leverages the gpu internal vec4 datatype, which handles 4 values, so either it could be rgbx or rgb (which can be doubled, leading to rrrbbggxx or rrgggbb)

1 Like

These screenshots look amazing! Can you post some high quality photos or video clips including closeups showing the “phosphors” so that we can get an even better appreciation for what you’re experiencing?

Also, are you sharing these presets somewhere?

This is pretty stunning as well, almost makes trying to make a Koko-aio preset pack seem like a redundant endeavour.

1 Like

Wow, thanks! That 500TVL really stresses 1080p, indeed moire is visible on solid backgrounds on particular colors (Super Hang on!).

Initially, my intent was to create boilerplate presets to show what was possible and let other users tweak them to create new ones. However, I probably got carried away and stole all the fun. :confused:

1 Like

Scanline gaps in general are bad for the long term health of OLED displays. Over time there’s a high risk of them becoming permanently embedded (burnt-in) due to uneven wear of the subpixels. The venerable @HunterK actually made a shader (after I requested) which alternated the active scanlines with the scanline gaps by vertically shifting the image by a certain number or fraction of pixels every so often. The timer could also be disabled so that the pixel shift could happen manually. It was a bit jarring when it happened mid game. I also remember some rendering artifacts being produced sometimes.

Is that something you think you might want to incorporate and iterate upon to have a smoother implementation?

1 Like

Well, the real risk is when you have permanent gaps.

This can be the effect of not letting the scanlines growing enough to fill them and/or keeping the very same image (or part of) still on the screen.

Maybe sloooowly move the content following a circle shape whose the radius is the same as a core pixel would mitigate both the problems.
The same concept via a single oscillation over the Y axis would just take care of the scanline gaps.

Yeah, I think it could be done without performance hits.

2 Likes

I’m on linux firmware (rocknix), so the little freeze is okay as it doesn’t make any messages. I managed to make the shortcut take the shaders with screenshot by some tinkering with settings.

Really like the Presets-ng/Monitor-for_HigherNits.slangp, I only increased output gamma as the game was too dark, maybe it’s just the game/system itself.

One thing that is bothering me is there is always a little dark cube in lower right corner, what is that ? :smiley:

edit: looks absolutely stunning with widescreen cheat, literally looks like I’m holding small crt in my hands, the display on RP5 is out of this world!

2 Likes

No clue, i cannot even spot it by the screenshots (?)

image

edit: it almost looks like a some sort of vignette, it’s in each corner, but like for some reason the bottom right corner didn’t “fade” properly?

1 Like

Interesting, there is no such thing here on Desktop Linux or under Android.

It has to be some turnip driver related thing.

-EDIT

Indeed i can spot one on the rp5 under android but on the pper right corner to me lol.

Man, but it does drive me crazy, such a small thing lol. I’ll have some time later today, I’ll try and disable some things in shader parameters to see if I can tie it to a particular effect.

edit: Noticed on other system (pcengine) the little cube is in upper right corner

@Cyber - crap old iphone camera, but, here’s a couple, as an example:

4k Sony OLED, Mask set at RBG (will share my present in a day or so)…and no, it’s not a CRT photo…:grinning:

![IMG_1993|666x500]

3 Likes

Damn, that looks amazing! The CRT vibes are off the charts

1 Like

Since there is a little performance hit, I implemented it as a static option; this means that the user who wants it has to edit config/config-user-optional.txt one time, then forget about it.
Makes sense since it is a system specific setting.

From docs-ng.md:

Antiburn protection
    By enabling this options, shader will slowly shake the content over Y/X axis to
    prevent image retention on affected screens like OLEDs.
    To use it, in file config-user-optional.txt, write one or both:
    #define ANTIBURN_Y 1.0
    #define ANTIBURN_X 1.0
    (1.0 is the effect speed).

Content will shake by half a scanline over the Y axis and by a full screen pixel over the X axis.
The default 1.0 speed is low so that you can hardly notice it, but you can safely use 0.5, 0.25 or even lower speeds for the antiburn effect to be effective.

1 Like

Thanks man! This is huge but it’s one of those things that no one will appreciate or notice until it’s already too late. It happened to me. It’s was a slow burn. Didn’t notice until I had to sit closer to the screen after a move.

At first I was second guessing myself, wondering if it was just YouTube compression artifacts but the un-affected area outside of the 4:3 gameplay area gave it away.

Then I started checking up close when watching other content and the permanent scanline gaps were there.

Can the X axis movement be disabled independently or made optional? I’m asking this because I imagine it wouldn’t be compatible with subpixel “accurate” CRT Mask shaders and presets.

Wouldn’t it cause artifacts in some cases if the underlying subpixels change while the generated mask subpixel layouts remain static?

The second part to this is, will you be willing to add a universal, standalone version of this to RetroArch?

Yes:

It is compatible, because it is the content that shifts, not the horizontal mask.

For the very same reason, the X shifting would not work, because a post-pass would have no way to differentiate between content and mask.

For similar reasons, Y shifting would destroy anything that snaps to real screen pixels, like slotmasks or shadowmasks; also it would shake any bezel (Uborder, MegaBezel…).
(The latter problem could be worked out by moving the image by screen pixels quants (now it uses fraction of pixels and smooths the motion), but that could produce a jerky effect)

1 Like

Hi @kokoko3k - I really wanted to thank you for your Slotmask TVL 410 and 500 presets - they are spectacular and extremely light - I’m already a fan of your VGA preset, now I’ve found these spectacular presets for consoles and arcades too, and I think I can finally turn my PC into a 360 degree retro gaming station. Thank you so much.

1 Like

Ok, here are my current settings that I use on a 4k Sony OLED (so, output is set at 2160p on retroarch), using Game Mode setting and BFI lv2 on the Sony settings, for anyone that wants to take a look.

Shaders should be uptodate from the dev repo.

Depending on your panel, you may need to dial down “input signal” (if you’re not using a BFI type setting on your panel) and “saturation” slighty, and change "sharp X from -70 to -75 for a little more sharpness (personally, I’d prefer a setting of -72)…If you do change input signal, you may need to slighty adjust “gamma out”.

Edit: should add I use Vulkan.

4 Likes

Oky, I think I managed to solve the issue:

There is a new backdrop image under “textures” directory, namedd backdrop_superhero.jpg you can use in place of the default one.

You can take a look to the gimp psource roject I uploaded in the secondary repository too:

Please, have fun :wink:

Will take a look tomorrow and report back.