Hi everyone!
Just created an account to ask about CRT shaders, but since it’s a new account I can’t create threads. I figure this one is appropriate though.
Can someone explain to me, an end user (but who is a software engineer - just never messed with shaders though), the shader flow precisely?
This is what I understand needs to happen, at a basic level. If necessary, assume game native res is 240 vertical and monitor res is 1440.
first passes will work on game native resolution to render scanlines, including scanline spacing (dark lines), beam width, blurring…
these passes will upscale the image, because to add these details you need more resolution.
Question 1: to which resolution does it upscale at this point? RetroArch output resolution (aka monitor resolution)? Or is it something intermediate?
Question 1.1: is this behavior different among CRT shaders, for instance Royale vs Guest?
I suppose the CRT mask passes need to happen at output resolution, because it relies on pixel structure
Question 2: is this always guaranteed? Do I need to use Integer scaling and/or core provided aspect ratio? My visual testing seem to indicate I don’t need these for pixel accurate masks, but I’m not entirely sure.
Question 3: how badly does geometry shaders affect the mask? Is it even worth it using masks, at least on lower output res, in conjunction with geometry shaders?
Question 4: where does NTSC effects enter in this flow exactly? I suppose the mask pass still has to remain at the end, right?
Thank you!
Bonus question: the Steam Deck is a V-BGR (vertical BGR) panel with 800 pixels. I cannot see a way to make masks work properly in this layout and resolution, so when I emulate there I just use Guest with mask disabled. Would anyone suggest anything different?