I am trying to make a 3D game in the style of the PS1, and thus I want to have the game rendered to a rather low resolution (ideally 640x360 for good scaling on typical monitors) and scaled up to the users’s native resolution. I do not, however, want the entire window to be rendered at this lower resolution because I’d also like to add some post-processing effects on top of the game to replicate the look of an older TV. I do not want these effects to be rendering at the same lower resolution as the game and instead want them rendered at the native resolution. Is there a way to accomplish this?
I haven’t yet delved into Godot’s rendering pipeline so I don’t know if you can apply post-processing after upscaling. I looked at the docs though and it didn’t seem to be the case (as of v4.3).
Based on my limited knowledge, I suppose you could render your game at a native resolution (e.g. 1080p) and then downsample the final image to your desired 640x360 resolution – either by posterizing the UV coordinates or performing a kernel operation. Your subsequent image effects (e.g. old TV glitches) will still be at native resolution.
Image effects for the described approach:
Downsampling effect (reduce perceived resolution)
Old TV glitch effect
This is probably not the optimal solution; using a lower internal rendering resolution and applying post-processing after upscaling is probably more performant. I wouldn’t know if that’s possible or if it’s actually the best way.