Please show off what crt shaders can do!

Uploaded screenshot. Take a look :wink:

Well you got your answer then :stuck_out_tongue:

You got the dithering right, as for the scanlines and such, that depends on the TV. Mine was more like this (shown only the bottom corner of the screen):

And this (full screen):

6 Likes

I don’t remember scanlines in my TV set.

Then it had really light scanlines like a nanosoft or something. Which just means you probably should still use scanlines just use ones that are barely visible (I feel like you still need scanlines regardless).

Personally it depends on what system I’m running to decide how I do scanlines. (High color count arcade games I do nanosoft style scanlines (almost not visible). For Nes (8-bit stuff) I tend to like a heavier scanline like a BVM/PVM (like solid black lines across the screen, yes I know black lines aren’t the scanlines). And 16-bit games (Snes and Genesis) I tend to do a middle ground of the two.

EDIT: Sometimes it just depends on the game what I do, but I still haven’t settled on a setup for N64/PS1 and Dreamcast games.

2 Likes

You can’t expect a CRT from the 80s to be as sharp as one from the 90s. More modern and sharper CRTs show better scanline separation. Old ones are blurrier as everything appears more mashed together.

1 Like

Are you replying to me or someone else?

EDIT: Sorry that sounded like I was wanting to argue.

To the “I don’t remember scanlines” comment.

1 Like

Any tips about the vertical video configuration? Resolution, offset, height and width?

EDIT: First I calibrated the look of the screen and made a new bezel. But the mask and scanlines do not reflect the reality of a CRT monitor. Do I need to make any changes to the parameters to get the same shader quality for the horizontal monitor?

1 Like

I bought a monitor stand that rotates and it was the best thing I ever did for vertical games.

3 Likes

Probably should enable Tate mode in the shader, results may vary lol.

@HyperspaceMadness I was bored and looking around shadertoy, would this be of any use for the bezel?

https://www.shadertoy.com/view/MljXDG

2 Likes

I tried withou sucess

Could you repost your settings? Links down

@shenglong

Hi,

This combination of shader is great, I still need to tweak my settings but the rendering is really nice I think.

Just that the TATE Mode seems to be broken (Final Burn Neo) with the glsl and slang shader

I must also try the parameter you gave for artecfacs with LUT

I think we should try to move towards such combinations unfortunately I do not know enough …

I still have to try in Sonic1 for dithering and the parameter for 3D games

It also remains the moire problem with curvature, I try what is mentioned here but without success

https://filthypants.blogspot.com/search?q=ewa+curvature

In any case a big thank you to you

Thanks for the link!

Something I wonder about is if people would like some tube reflection effect on the screen like what is shown in the shadertoy.

My experience with putting reflection on top of the tube through overlays has shown me that for my tastes any more than a slight reflection is very distracting while playing the games.

1 Like

Yeah the reflection on the screen is distracting, mainly posted the link because a dynamic bezel seemed fancy and really useful for this. As if it worked well as a replacement we wouldn’t have to make multiple bezels for orientation and resolution.

EDIT: On the subject of moire mitigation, @hunterk I’ve been trying for the last week to add the moire mitigation code to crt-guest and can’t get it to work properly at all. The noise/static happens, but when I use curvature the screen has a blurred texture of the game I’m playing where it should be black (nothing) for the curve.

Also can’t get the masks to do the curvature thing. Some assistance would be greatly appreciated :blush:.

Yeah, that’s the glow effect. You’ll have to apply the curvature to the glow, as well. The easiest way to do it is probably going to be to start off the fragment with something like:

vec2 moire_coord = Warp(vTexCoord);

And then replace all of the later vTexCoord instances with your moire_coord.

However, you very likely don’t want to curve your mask or apply the static to it. Masks are very finicky and need to line up with the monitor’s subpixels or they look very bad, so you want them applied at the very end.

1 Like

Quick question, why does the moire mitigation in the repo do mask curvature then? Personally the one in the repo doesn’t (look like it) work(s) properly for me unless I have the mask curvature enabled.

EDIT: Sorry, I sound rude. I’m asking this because I’m curious :joy:.

I probably just couldn’t think of any other way to do it, but if you have the option to do it without curving, you should /shrug

EDIT: actually, it doesn’t look like the mask is curved:

Mask(vTexCoord.xy * global.OutputSize.xy * 1.000001)

That would have been Mask(pp * global.OutputSize.xy * 1.000001) if it were curved/static-ed, which makes a bunch of RGB noise.

1 Like

This is from moire-resolve.slang from the repo.

vec2 pp = moire_resolve(vTexCoord.xy);
vec2 cc = Warp(pp);

FragColor.rgb *= Mask(((params.mask_curvature > 0.5) ? vTexCoord.xy : cc) * params.OutputSize.xy * 1.000001);

Edit: When I’m using this version of the shader, the moire static is fairly thick and noticeable, but when mask curvature is enabled via shader parameters, the moire static kinda focuses on the moire instead of the whole screen. At least that’s how it visually looks to me.