Resolution and Scaling: Wild Theory
June 12, 2012 § Leave a comment
They say that communism works, in theory. So I’m going to roll with a little thought exercise here.
I read a piece a while back, detailing how the author believed that PC gamers were being “self-entitled” by demanding that they be able to run games at 1080P 60, and the author made claims about the quality of films, particularly those in the Blu-Ray format, to do with its typical 24fps rate, and detailed stuff to do with the quality on screen. For the life of me, I can’t remember where I read it, but an interesting point was raised, namely that we should be aiming for photo-realistic quality(technically a more accurate term would be “pixel-perfect,” that is that no “blemishes” are shown), but at 1280 * 720, instead of the usual 1920 * 1080. To those unaware, resolution is a very demanding area of rendering, particularly when techniques such as MSAA are involved, which essentially increase the workload as a multiplier to the number of pixels. To clarify further, 1280 * 720 means that you’re rendering an area of 921,600 pixels. 1920 * 1080 on the other hand, involves 2,073,600 pixels, which equates to a bit over double the pixels, obviously. Even without going into the nitty gritty, it should be obvious that scaling something down by as “little” as that much heavily reduces the load of any pixel sampling effects. The problem of course, is that there’s an obvious decrease in quality with the resolution drop, that can be quite jarring.
For some examples, here’s an image that was taken at 800*600, which I’ve scaled to 1440 *1080. As the screenshot was taken at default resolution, an external scaling tool had to be used, but the point should more or less stand(Best if you view the full quality version):
All three shots were taken without anti-aliasing, to help reinforce my point. Looking at them closely, while the loss in quality is evident, I find that one element stands out particularly, and that’s the UI. When it gets scaled up, the crispness is lost on an element that should really be crisp. Obviously, this isn’t an issue in a game with a minimalist UI, or even if one were to design the font and elements around it, it wouldn’t be such a problem, but it is still a pain. And under a “traditional” render system, there’s not really a lot that can be done. Now, this is where things get a bit dodgy. I am not an expert on the rendering pipeline, so I may well be wrong about elements here, if so, I apologise, and that’s why this whole thing is theory.
In a standard rendering system, everything is rendered in one big go. So, while you could tell something to be “rendered” at a lower resolution, it would make no real difference in the end(as far as I know), as everything just gets gathered up, and plopped together in one go. This is where deferred rendering could show some real advantages. When you use deferred rendering, you can calculate different parts of the scene in parallel, and then lump them all together in the end. With this in mind, it may well be possible to set up UI elements to run at your screen’s native resolution, while using lower resolution parts to everything else. Of course, the whole thing would presumably have to be rasterised at the end at the full resolution, but the majority of what’s being shown would only have to deal with a lower res version, which should, in theory, reduce the overall load significantly, and allow for some of the higher quality elements to remain.
I may well be completely wrong about this, of course, but I thought it was an interesting tidbit to think about.