Koko-aio shader discussions and updates

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

My pov is biased because I know exactly what does what, but I hope you will find it easy to understand.

5 Likes

Bonjour kokoko3k. Un grand merci pour votre énorme travail. J’attend avec impatience vos nouveau reglage. Avec vos shaders je peux jouer sur mon pc portable sans vidé la batterie en 30 min. On se rapproche de HSM mais en plus léger.

Merci

4 Likes

I finished porting old presets to new (in presets-ng/) folder (they look the same).

Adapted and renamed pgrid* presets with more meaningful names, there are some permutations, sorry!

pgrid3-Corelevel_HMask-Aperturegrille.slangp

pgrid3-Corelevel_HMask-CoreLevel_Slotmask.slangp

pgrid3-Corelevel_HMask-ScreenLevel_Slotmask.slangp

pgrid4-Screenlevel_HMask-Aperturegrille.slangp

pgrid4-Screenlevel_HMask-CoreLevel_SlotMask.slangp

pgrid4-Screenlevel_HMask-ScreenLevel_SlotMask.slangp

Also, an handheld preset has been added, based on those shots from a real gba:

I reduced a bit the cell bleeding to account for camera issues.

Handheld-RGB.slangp

What combination of corelevel/screenlevel hmask/slotmask/aperturegrille do you prefer?

How does handheld preset look to you, any suggestion?

In the near future, I think I’ll be away for a while because of taxes (sob) and an holiday in Japan (yay!)

9 Likes

Hi Kokoko3k, Thanks for this update. What I see is very interesting. Please give me some advice: do you recommend using the core or the screenlevel with the pgrid for use on smartphones? PS good luck in your projects.

Hi Rob, given the low size of the screen, maybe I’d try corelevels ones first

1 Like

Here are the results of a test. What I see I like very much. They will then be included in your definitive package right? Will there be a way to have a bezelwider version as well? Thanks for your work, your progress is fantastic

Yeah, they will be included.

The presets are already ‘bezelwider’, which means the bezel is visible on left/right sides only.

What do you mean?

1 Like