@hunterk after thinking about this some I think this approach would be best, having a block which sets the scaling and handles the aspect ratio like you had before that could be be put in the crt shader and also in the reflection shader. What happens if both use the same parameter names?
I added a few tweaks to the scaling bit:
-
Min bezel height parameter which will reduce the integer scaling multiple by 1 so there is space for the bezel at top and bottom of screen when a default integer scale would put the bottom of the screen at the bottom of the monitor
-
Integer scale multiple offset to allow you to increase or decrease the multiple by an arbitrary value
-
Crop overscan left and right as a fix for some platforms/games which have garbage on the left or right edge.
Ideally it would be great to have top & bottom crop overscan too, the reason I didn’t do them was because I think they need to affect the integer scale to not break the integer scale
For scaling it seems that it would be good to have the a non integer scaling option where you could specify the screen height as a ratio of the full screen height
It seems that the reflection shader will still need to pull the output of the same pass the crt uses for input, and that perhaps doing the blur within the reflection shader would avoid dependency on other specific blur passes. What would be the best way to get the right input pass, maybe a companion shader to the reflection shader which sits at the right spot in the shader chain?