An inspection of LCD sub-pixel structure. Lottes 2 is not included, instead 2 is in it’s place. 8 is just experimental (in acton in Zelda with slot mask too)
Lottes 2 mod
Lottes 2
An inspection of LCD sub-pixel structure. Lottes 2 is not included, instead 2 is in it’s place. 8 is just experimental (in acton in Zelda with slot mask too)
Lottes 2 mod
Lottes 2
@Cyber it’s in the glsl crt folder, you can check it out there. @DariusG so with this latest update what is your recommended settings while using the slot mask from mask 6? Or is your slot mask settings something else? I want to keep the slot mask looking the same way it does in those Virtua Fighter 2 pics
Slot mask in example will add adjustable slot mask look to an apperture grille mask like 0 or 2. Simply don’t touch it and nothing will change. But give a try using mask 2/7, slot strength 0.5, slot width 3.0, slot height 1.0 or 2.0. See if you like it.
Ah ok. Yeah those settings give me the slot mask I use to use before guest introduced the current version I love. It’s good to have this option as well though
Adjusted lottes mask 1 same with mask 2 sub-pixel pattern (BGR instead of RGB), now it looks like it creates a proper pattern and not a mess like before.
https://mega.nz/file/bjpABaxb#6R02upMpVCMGnDzdj2LwkkbX3D3iER3WKW4sV2hybY4
Lottes 1 for comparison. A huge magenta line together with a green line far away somewhere.
Added another mask (mask 9) trying to replicate this. At some time i will sort them and dump some if not useful. Just experimenting at the moment
EDIT: fixed a mistake i did (too fast without checking lol)
https://mega.nz/file/m3JTgI5R#qzfRyMOcEpcoYadzMdth4NkntxaZiuuteb3MED3iegk
Feedback is welcomed
I use BGR, RGB is not accurate at least at my monitor
This seems like a brilliant idea!
Looks like this pattern is more correct? Think so.
Real CRT shot resized and filtered
Testing at Guest.r-mini for details (which is much sharper)
You need to add Mask King to your profile
Looks good, hopefully I have some free time to check stuff out soon!
Here is a copy if anyone wants to test, just drop it in shaders_glsl/crt/shaders
Mask 9
Updated with another mask - 10 for 4x scale
https://mega.nz/file/X2hTna5A#L9k-CBh7p_NwMBkUVD5K23XRlE5La-H_XfjAht5qnes
Hey @DariusG!
This thread needs a better organization. You are doing a great job with the shaders. How about keeping well-defined links for each version of your preset at the top of the page? If we like an old preset better, we should be able to find it more easily in one place. I really don’t know how to use these files in the links.
What do you think?
The files in the link(s), the last one I checked is just a glsl file, so you just pick that as the shader to run…
Organization sounds good tho.
There are versions in the main glsl shaders repository and i update them often with PRs. You can download the last one and simply pick as 1st pass and press apply. This is ongoing process, e.g. dropping some things and adding others so it would be pita to keep links for all of them.
Alternatively you could have a super messy GitHub with two main folders, current and older.
Just add a date or rev to the older folder shaders, dunno food for thought. (You don’t even need to maintain the older folder, just let it exist )
Keep up this approach @DariusG. I had mentioned mask pattern level improvements as another step after remembering what @Brainbin74 had said about the state of the current PNGs in use.
Small but important improvement i think, multiplied each pixel’s maskDark with pixel luminance, this creates more defined emulated “pixels” e.g. dark pixels will be more defined and not blurry like before.
It looks like you’re onto something here! Looks great!
It’s a bit mind-bending to think what will happen in 20 different stripes, 60 pixels total if you calculate this with that, where are the scanlines passing and darkening etc then write the code correctly. Very easy to make mistakes and rectify again and again.
I’m wondering if it would be worth getting a mask which just reads a png for the mask pattern.
Let me know if you’d like some help with this, I’m quite confident it will work in slang, but maybe it will work in glsl. It woud need to use the textureSize(sampler2d, 0) to get the texture resolution.
Although I’m not sure if @hunterk has already created something like this.
my old phosphorLUT shader (the first shader I ever wrote from scratch) was all about doing exactly that. You don’t need to know the size of the LUT to make it tile, thankfully:
vec2 LUTeffectiveCoord = vec2(fract(vTexCoord.x * params.SourceSize.x / PHOSPHOR_SCALE_X), fract(vTexCoord.y * params.SourceSize.y / PHOSPHOR_SCALE_Y));
Just use that as the coord when you sample the LUT and it’ll tile.
Likewise, aliaspider and I toyed with using CMY masks to keep brightness up and resizing the mask patterns ahead of time to avoid aliasing and discoloration at runtime.