I am making a mobile FPS with a retro-like aesthetic and am trying to figure out a good way to render camera output at a quarter of the native resolution, then scale it up to fill the screen - both to achieve the aesthetic I want, but also for performance reasons.
I have tried these methods:
1. Simply change the viewport rect values of the camera to 0.5. This downscales it well, but I can’t figure out a way to then actually scale the rect up to fill the screen.
2. Change the resolution of the game overall. This has two issues: It doesn’t downsample using point interpolation so it looks blurred rather than pixelated, and it also results in everything being downsampled including the UI, which I do not want.
3. Use a render texture and a separate camera. This works the best of the approaches I’ve tried and produces a result that looks exactly like I want - with no AA or blurred interpolation and working on a specific camera. The issue with this method, though, is twofold: Partly I worry about performance since I’m now just trading off resolution for texture memory, and partly it’s practically frustrating to work with two cameras rather than one.
Is there a better, simpler way to do this? Optimally I’d like a straightforward solution that literally does nothing else but render a quarter-sized viewport and then upscales it to fill the screen - interestingly, if I change the viewport rect of the camera like in method 1 above and then use the editor “scale” slider I can sort of emulate the look I’m going for - is there an actual native way to do this at runtime, perhaps?