Are you replying to me or someone else?
EDIT: Sorry that sounded like I was wanting to argue.
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.
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?
…I bought a monitor stand that rotates and it was the best thing I ever did for vertical games.
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?
I tried withou sucess
Could you repost your settings? Links down
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.
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
.
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.
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
.
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.
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.
Ah, I was looking at the ‘resolve’ pass from the glow shader. Yeah, I should probably get rid of that conditional and just always do the unjiggered vTexCoord.
I’d at least advise testing it before removing it, as it does a nice job at minimizing/removing visible moire. Also if you’re editing that shader would you change the lable for moire test (user parameter) into something like moire toggle idk. It just seems like a debug feature being named test lol.
EDIT: Thanks for the help and explanation!
My new shader preset. Just trying to dial in the sharpness; I think this is about right. Trying to match a 500-600 TVL shadowmask.
As always, I have my LCD backlight cranked to 100% when adding any kind of mask and/or scanlines. The images below will be too dark unless you’re cranking up the backlight and using an LED-lit LCD (really any LCD within the last 5 years will do).
alias0 = ""
alias1 = ""
BRIGHTNESS = "1.000001"
filter_linear0 = "false"
filter_linear1 = "true"
float_framebuffer0 = "false"
float_framebuffer1 = "false"
GAMMA_INPUT = "2.400000"
GAMMA_OUTPUT = "2.200000"
GLOW_DIFFUSION = "0.000000"
GLOW_HALATION = "0.000000"
GLOW_HEIGHT = "0.500000"
GLOW_WIDTH = "0.500000"
LUTHeight = "2.000000"
LUTWidth = "2.000000"
MASK_COLORS = "2.000000"
MASK_SIZE = "1.000000"
MASK_STRENGTH = "0.000000"
mipmap_input0 = "false"
mipmap_input1 = "false"
overlay = "C:\Program Files\RetroArch\shaders\shaders_glsl\reshade\shaders\blendoverlay\aperture_1_2_bgr.png"
overlay_mipmap = "false"
overlay_wrap_mode = "clamp_to_border"
OverlayMix = "0.500000"
parameters = "SHARPNESS_IMAGE;SHARPNESS_EDGES;GLOW_WIDTH;GLOW_HEIGHT;GLOW_HALATION;GLOW_DIFFUSION;MASK_COLORS;MASK_STRENGTH;MASK_SIZE;SCANLINE_SIZE_MIN;SCANLINE_SIZE_MAX;SCANLINE_SHAPE;SCANLINE_OFFSET;GAMMA_INPUT;GAMMA_OUTPUT;BRIGHTNESS;OverlayMix;LUTWidth;LUTHeight"
scale_type_x0 = "source"
scale_type_y0 = "source"
scale_x0 = "5.000000"
scale_y0 = "5.000000"
SCANLINE_OFFSET = "0.000000"
SCANLINE_SHAPE = "1.000000"
SCANLINE_SIZE_MAX = "1.500000"
SCANLINE_SIZE_MIN = "0.500000"
shader0 = "C:\Program Files\RetroArch\shaders\shaders_glsl\crt\shaders\crt-aperture.glsl"
shader1 = "C:\Program Files\RetroArch\shaders\shaders_glsl\reshade\shaders\blendoverlay\blendoverlay.glsl"
shaders = "2"
SHARPNESS_EDGES = "1.000000"
SHARPNESS_IMAGE = "2.000000"
srgb_framebuffer0 = "false"
srgb_framebuffer1 = "false"
textures = "overlay"
wrap_mode0 = "clamp_to_border"
wrap_mode1 = "clamp_to_border"
I think the above preset looks better at even integer scales (4x, 6x etc). Since the LUT is 2x2 pixels and the scanlines are 5 pixels wide, there’s a weird moire-like pattern in the above images. This raises the question: why don’t shadowmask CRTs exhibit this moire-like pattern with scanlines? It seems unlikely that the beam would always perfectly line up with the phosphors in such a way that this wouldn’t happen. Or maybe shadowmask CRTs do show the same moire-like pattern with scanlines and I’ve just never noticed.
edit: it’s not really moire per se; it looks like slightly uneven scanlines due to the fact that the phosphor arrangement in the scanline alternates with each adjacent scanline (this is difficult to explain).
So, the aperture grille pattern has the advantage of looking better at odd integer scales, since the phosphor arrangement is the same with each scanline (again, difficult to explain).
Edit: Okay, this is one of those things that’s just easier to explain with pictures.
The problem is that you have two scanline/phosphor patterns that alternate between each other, which tricks your eyes and gives the illusion of uneven scanlines (at least, it does for me). Does anyone know if shadowmask CRTs did the same thing? If not, why not?
2nd edit: Is this just all in my head? I need a nap.
Here’s an example of the same preset at 4x: