Koko-aio shader discussions and updates

I just tried your preset and I must say: it’s a huge improvement! It now closely resembles the Hantarex CRT in my original photo: the slot mask looks convincing, and the scanlines are finally visible.

I’ll try adjusting the horizontal scanlines “===” to make them a little darker and more pronounced; a little more black between the phosphor lines would do the trick.

Thanks again for your time and dedication. Your shader is now very close to what I’m looking for.

4 Likes

I could not make the slang shaders work on rg552 no matter what cfw I tried, but I bought Retroid Pocket 5 meanwhile and there they work great as it supports vulkan (I guess? I’ve no idea how any of it works honestly). I found out apparently it is impossible (in 21st century on linux no less!) to take a screenshot on a handheld, so this is best my oneplus 10t camera can do

Thank you for the wonderful shaders and all your work!

2 Likes

Thank you very much, I own an rp5 and a flip2 as well and that screen is simply amazing.

Being so bright, I prefer Presets-ng/Monitor-for_HigherNits.slangp

Also, you can take screenshots by pressing power + Volume Down; also they defaults to png lossless format, so you’re good to go :wink:

Another tip is to go into shader menu and set shader delay to 50…100 or even more; that way android will be responsive between the game loading and the shader compilation; mitigating the “application not responding” spam dialog bug on android 13.

2 Likes

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