Koko-aio shader discussions and updates

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

Good morning, sorry it was my mistake, I’m already bezelwider in fact. I can’t wait for the final version to come out, what I see is even more beautiful than it was before, which I didn’t think possible. With this preset I have a dot mask effect that is neither too fine nor too coarse. Also I love the dot mask style, and I hope to try it on my Mini PC this week (I have yet to install Linux on it). Thank you so much for your valuable work.

Just to share and give some visual feedback : this is the PGRID3 preset with Hmask core level and Slotmask screen level. Added the FXAA and raised the Halo value to 0.08 - the first screen is with Deconvergence ON and the second with OFF - here are the results:

Open To Meraviglia

1 Like

Together with the Super Nintendo here is one of my childhood dreams (realized thanks to emulation) Donkey Kong!

3 Likes

pgrid presets definitely need more tweaking; more halo seems a good idea, since they are a bit “extreme”, but i guess they may still be of interest for some use cases, when you push brightness very high on oled display to say one.

1 Like

I agree, they tend to be a bit dark, increasing Halo and activating Bloom things improve significantly but I can’t find the perfect way. Unfortunately I didn’t take any screenshots but, as I said, I activated Bloom and brought Halo to 0.8 as a starting point. But they are small tweaks, the big part is present and, I repeat, it is spectacular. I’ve tried games for Final Burn Neo, and it’s amazing how well Hmask on core level scales according to the content. I keep the slotmask on screen level so as not to make the “dot” effect too coarse.