Koko-aio shader discussions and updates

Usually, things like scanlines and masks get screwed at any non-native resolution of the display. Is this shader behaving any differently?

I suppose it mostly depends on the scaling used by the display and on the source and dest resolution. On my display, 1440p to 4k scaling (lot of room) still produced a flawlessly picture. Also, scanlinesì gaps are mostly unaffected in any case.

But yes, koko aio behaves differently in that regard when it comes to non 1x horizontal masks, since it can optionally not rely on 1:1 matching between mask and screen coordinates.
If there is room, it can be used to emulate sub-phosphor glow.

How dows this slotmask look to you? In the hunt for a more convincing slotmask effect on 1080p resolutions, i’ve found this.
The mask is standard green magenta, and the vertical stagger is standard 0.5 one, but this is particular because the phosphor height is exactly 2 scanlines and the whole phosphor grid has been shifted down by 1/8 (new parameter).

This produced an interesting crt like effect on low/mid tones imho:

3 Likes

Hi Kokoko3k, thank you for your tireless work. Unfortunately I view from smartphone, but from what I can see and from my taste I really like the final result. From what I see I would put just a little bit more brightness since, if I’m not mistaken, slotmasks tend to darken the image. By now on smartphone I have found my ideal size with your PGRID3 preset that you had inserted a few days ago, but as soon as I can format the Mini PC I would like to find a similar result there too. You’ve taken a great direction.

2 Likes

HA.
I wish i could know what is that direction, since i’m in the middle of nowhere and everywhere at the same time, too many ways to take and experiment.

pgrid presets were just moved into a WIP directory, i suggest you to save the prset you like, just in case :slight_smile:

1 Like

I am ignorant on the technical side of the matter, I base myself on what I see with my own eyes. That’s why I mention your PGRID3 because I really like what I see, at least on smartphones, of course I should just be able to experiment on a PC with a 1080p screen. I speak for my taste, the “dot” effect I love it, and even using methods such as FXAA leaves the image slightly “pixelated” giving the right balance between the past and the present. Certainly it is a matter of memories (altered by time), where one comes from (due to the technical differences of the CRTs and connections from region to region) and pure personal taste. However your packages include more and more options that should please everyone. PS thanks for the advice, but I’m sure that if you make changes they will only improve. You are now a certainty.

1 Like

Is this in the repo?

@ROBMARK85 pgrid3 presets are the ones where every rgb phosphors triad matches the size of the source pixel, so they are bigger. I suppose they work good on small screens if you like to see the pixels one by one (i do). One downside of those presets is that the resulting resolution depends on the content, so you will have giant pixels when trying to emulate an handheld, and tiny ones when you emulate something like gamecube, dreamcast and so on.

@oldpainless: not yet, you may need to adjust the reference path and tweak it, is it a quick draft:

slotmask wip preset green magenta mask
 #reference "../koko-aio-ng.slangp"

shaders = "17"

DO_CCORRECTION = "1.000000"
GAMMA_OUT = "0.500000"
OFFSET_STRENGTH = "0.500000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.999999"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "3.500000"
IN_GLOW_H = "7.000000"
DO_PIXELGRID = "1.000000"
PIXELGRID_MIN_W = "0.300000"
PIXELGRID_MAX_W = "0.400000"
PIXELGRID_H_PRST = "1.000000"
PIXELGRID_MIN_H = "0.300000"
PIXELGRID_MAX_H = "0.800000"
PIXELGRID_INTR_FLICK_POWR = "0.250000"
PIXELGRID_Y_MASK = "1.000000"
PIXELGRID_Y_MASK_COORDS = "0.000000"
PIXELGRID_Y_MASK_HEIGHT = "-2.000000"
PIXELGRID_Y_MASK_ON_WHITE = "0.250000"
PIXELGRID_Y_MASK_SHIFT = "0.230000"
PIXELGRID_Y_MASK_STEEP = "16.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.400000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.300000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "3.500000"
BLOOM_QUALITY = "2.000000"
BLOOM_GAMMA = "10.000000"
BLOOM_GAMMA_OUT = "10.000000"
BLOOM_POWER = "10.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.480000"
GEOM_WARP_Y = "0.510000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "0.000000"
BEZEL_FRAME_ZOOM = "0.174000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
DO_DYNZOOM = "0.000000"
V_SIZE = "2.500000"
V_POWER = "1.000000"
S_POSITION = "194.000000"
ALT_BLANK_STRENGTH = "0.000000"
2 Likes

Contast/sat/colour aside for the mo, you can see the artifacts here with 1080p out.

Probably something went bad when copying pasting the preset, as i didn’t see any. I’ll make another one soon.

Have you used the latest code?

–EDIT–

My bad, i forgot to push the commit with support for the new parameter, done just now.

–edit–

i can spot a bit of moiree when the neogeo logo fades from white to black

3 Likes

Will d/l again and have a play.

slotmask wip preset with moiree mitigations
 #reference "../koko-aio-ng.slangp"

shaders = "17"

DO_CCORRECTION = "1.000000"
GAMMA_OUT = "0.500000"
OFFSET_STRENGTH = "0.500000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.999999"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "3.500000"
IN_GLOW_H = "7.000000"
DO_PIXELGRID = "1.000000"
PIXELGRID_MIN_W = "0.300000"
PIXELGRID_MAX_W = "0.400000"
PIXELGRID_H_PRST = "1.000000"
PIXELGRID_MIN_H = "0.300000"
PIXELGRID_MAX_H = "0.800000"
PIXELGRID_INTR_FLICK_POWR = "0.250000"
PIXELGRID_Y_MASK = "1.000000"
PIXELGRID_Y_MASK_COORDS = "0.000000"
PIXELGRID_Y_MASK_HEIGHT = "-2.000000"
PIXELGRID_Y_MASK_ON_WHITE = "0.350000"
PIXELGRID_Y_MASK_SHIFT = "0.230000"
PIXELGRID_Y_MASK_STEEP = "16.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.400000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.300000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "3.500000"
BLOOM_QUALITY = "2.000000"
BLOOM_GAMMA = "10.000000"
BLOOM_GAMMA_OUT = "10.000000"
BLOOM_POWER = "10.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.480000"
GEOM_WARP_Y = "0.510000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "0.000000"
BEZEL_FRAME_ZOOM = "0.174000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
DO_DYNZOOM = "0.000000"
V_SIZE = "2.500000"
V_POWER = "1.000000"
S_POSITION = "194.000000"
ALT_BLANK_STRENGTH = "0.000000"
2 Likes

2 Likes

It’s all personal taste. It’s a good looking shader. For me, when I really zoom in, it’s like I’m seeing too much phosphor bleed (even with decon off), which at normal viewing it looks like pixel misalignment.

Not sure if that helps or not.

Thanks.

It is not supposed to be accurate by any means,so it is supposed to be even less accurate when zoomed in. What I like about it is that “pinch/sparkly” look i see on real crts; misalignment is a consequence of the slotmask shift, i think.

1 Like

The previous one used a gm mask; switching to a full rgb one required several modifications and the look changed a lot.
The following also carries halo, bloom, bells and whistles; you can quickly modulate the bleeding by changing the glow power (input signal strength, eg: from 2.0 to 1.4)

slotmask wip preset rgb mask, halo bloom
shaders = "17"
#reference "../koko-aio-ng.slangp"

DO_CCORRECTION = "1.000000"
GAMMA_OUT = "0.500000"
OFFSET_STRENGTH = "0.200000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.799999"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_SPREAD = "0.000000"
IN_GLOW_W = "0.000000"
IN_GLOW_H = "0.000000"
IN_GLOW_BIAS = "0.000000"
DO_PIXELGRID = "1.000000"
PIXELGRID_MIN_W = "0.100000"
PIXELGRID_MAX_W = "0.860000"
PIXELGRID_H_PRST = "5.000000"
PIXELGRID_MIN_H = "0.300000"
PIXELGRID_MAX_H = "0.800000"
PIXELGRID_Y_MASK = "1.000000"
PIXELGRID_Y_MASK_COORDS = "0.000000"
PIXELGRID_Y_MASK_HEIGHT = "-2.000000"
PIXELGRID_Y_MASK_ON_WHITE = "1.000000"
PIXELGRID_Y_MASK_SHIFT = "0.120000"
PIXELGRID_Y_MASK_STEEP = "8.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.350000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.000000"
HALO_VS_SCAN = "0.350000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.250000"
BLOOM_QUALITY = "2.000000"
BLOOM_GAMMA = "1.000000"
BLOOM_GAMMA_OUT = "6.999994"
BLOOM_POWER = "4.999981"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.480000"
GEOM_WARP_Y = "0.510000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "0.000000"
BEZEL_FRAME_ZOOM = "0.174000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
DO_DYNZOOM = "0.000000"
V_SIZE = "2.500000"
V_POWER = "1.000000"
S_POSITION = "194.000000"
ALT_BLANK_STRENGTH = "0.000000"

3 Likes

Looking good. Perhaps others could try it and report back?

I thought the only way to get a consistent effect with the PGRID is to find standard levels to use based on the resolutions where you run the content, for example a PGRID slotmask or aperture grill tuned for 1080p, or 2K or 4K , trying to keep more or less a narrow dot grid. I actually noticed what you wrote when trying to run GameBoy Advance games. Already the grid using the arcade games (I played Marvel Super Heroes arcade version this weekend) was even more beautiful and pleasant. If you could find a way to play that grid across all content it would probably be the perfect answer to emulating all the old consoles. I’m fantasizing.

1 Like

Thanks, Maybe i’ve also understood what is the misalignment and the bleeding you were speaking about?:

slotmask wip preset gm mask, halo bloom, bleed misalignment mitigated

#reference “…/koko-aio-ng.slangp”

shaders = "17"

DO_CCORRECTION = "1.000000"
GAMMA_OUT = "0.500000"
OFFSET_STRENGTH = "0.500000"
DO_IN_GLOW = "1.000000"
IN_GLOW_POWER = "1.699999"
IN_GLOW_GAMMA = "2.000000"
IN_GLOW_W = "3.500000"
IN_GLOW_H = "7.000000"
DO_PIXELGRID = "1.000000"
PIXELGRID_MIN_W = "0.300000"
PIXELGRID_MAX_W = "0.400000"
PIXELGRID_H_PRST = "1.000000"
PIXELGRID_MIN_H = "0.300000"
PIXELGRID_MAX_H = "0.700000"
PIXELGRID_Y_MASK = "1.000000"
PIXELGRID_Y_MASK_COORDS = "0.000000"
PIXELGRID_Y_MASK_HEIGHT = "-2.000000"
PIXELGRID_Y_MASK_ON_WHITE = "0.650000"
PIXELGRID_Y_MASK_SHIFT = "0.230000"
PIXELGRID_Y_MASK_STEEP = "16.000000"
DO_HALO = "1.000000"
HALO_POWER = "0.400000"
HALO_W = "3.500000"
HALO_H = "3.500000"
HALO_GAMMA = "1.300000"
HALO_VS_SCAN = "0.150000"
DO_BLOOM = "1.000000"
BLOOM_MIX = "0.150000"
BLOOM_SIZE = "3.500000"
BLOOM_QUALITY = "2.000000"
BLOOM_GAMMA = "10.000000"
BLOOM_GAMMA_OUT = "10.000000"
BLOOM_POWER = "10.000000"
DO_CURVATURE = "1.000000"
GEOM_WARP_X = "0.480000"
GEOM_WARP_Y = "0.510000"
GEOM_CORNER_SIZE = "0.010000"
GEOM_CORNER_SMOOTH = "200.000000"
DO_BEZEL = "1.000000"
BEZEL_INNER_ZOOM = "0.000000"
BEZEL_FRAME_ZOOM = "0.174000"
AMBI_FALLOFF = "0.400000"
AMBI_POWER = "1.000000"
DO_DYNZOOM = "0.000000"
V_SIZE = "2.500000"
V_POWER = "1.000000"
S_POSITION = "194.000000"
ALT_BLANK_STRENGTH = "0.000000"

Old:
image

New, mitigated:
image

6 Likes

Wow. Looks fantastic! I really love it!

3 Likes