Simply explained: It costs less to render the viewport at 256x256 and then after everything’s been rendered simply taking that 256x256 final image and scaling it up to 1024x1024 - Especially useful on Mobile.
This doesn’t work for Pixel Art, though. Or really anything without losing image quality. The reason why this works with Pixel Art is because Nearest Neighbor scaling doesn’t ruin the image. Bilinear scaling makes it blurry. Yes, you can scale every texture up manually but that’s not the point - the point is to save performance. You’re effectively running the game at a much lower resolution and that’s VERY good.
For anyone wondering how to do this: r.Upscale.Quality=0 will set the upscaler to nearest neighbor. r.ScreenPercentage can be used to reduce the resolution before upscaling is applied. Together, you should be able to get a nice pixelized look. Don’t forget to disable all the graphics features you don’t need anymore and place these commands in the engine INI if you want them to run on launch.
For some reason r.Upscale.Quality=0 still blurs the pixels by using bilinear interpolation when upscaling on mobile renderers. No clue why and it’s causing some frustration to say the least.