by Chris » Sat Jul 21, 2018 7:51 am
In these days of LCDs and the like, changing the resolution for fullscreen is pretty much useless. LCDs have a fixed resolution, and when you "change" the resolution, you're just having the monitor accept a smaller image for display that it stretches to fill the screen. There's little advantage to having the monitor do this scaling, but a good number of advantages to allowing the graphics card/app do it. With the app doing the stretching via hardware, it prevents issues with the desktop resizing, throwing your desktop icons or other windows out of whack to fit a new size. With the app doing it, you can also get the option to retain the correct aspect ratio of the image, adding letterboxing or pillarboxing as needed (monitors I've seen all use stretch-to-fill, which destroys the pixel aspect ratio).
Additionally, most games these days render to offscreen framebuffers and don't write to the window/screen backbuffer until after post-processing has been handled. That write to the backbuffer can incorporate the necessary stretching, after all the hard work has been done, which also has the important implication of allowing "dynamic resolution". Since the pixel shaders and fill rate of drawing the scene encompass a large percentage of the game's rendering time, the game can keep a running profile of how long it took to draw a frame, and if it saw it took longer than desirable, the next frame can render to a smaller portion of its offscreen framebuffer and adjust the scaling metrics accordingly (fewer pixels=faster frame rendering). The intention being that rather than scene complexity causing the framerate to drop, it instead reduces the internal render resolution by some percentage, adding a slight scaling blur (not unlike using a lower screen resolution) to retain smooth motion. The advantage here is that it's not stuck to a predefined resolution list, and the UI elements (which are often very cheap to draw) can stay at full resolution. The game can also cap the resolution scale, or set a static scale via game options for user choice.
This also works the other way around, too. Rather than lowering the internal resolution below the screen size, you can increase it above the screen size to enable a form of super-sampling anti-aliasing (SSAA), which if you have the power to spare, is far superior to the more common MSAA or FXAA techniques.
In these days of LCDs and the like, changing the resolution for fullscreen is pretty much useless. LCDs have a fixed resolution, and when you "change" the resolution, you're just having the monitor accept a smaller image for display that it stretches to fill the screen. There's little advantage to having the monitor do this scaling, but a good number of advantages to allowing the graphics card/app do it. With the app doing the stretching via hardware, it prevents issues with the desktop resizing, throwing your desktop icons or other windows out of whack to fit a new size. With the app doing it, you can also get the option to retain the correct aspect ratio of the image, adding letterboxing or pillarboxing as needed (monitors I've seen all use stretch-to-fill, which destroys the pixel aspect ratio).
Additionally, most games these days render to offscreen framebuffers and don't write to the window/screen backbuffer until after post-processing has been handled. That write to the backbuffer can incorporate the necessary stretching, after all the hard work has been done, which also has the important implication of allowing "dynamic resolution". Since the pixel shaders and fill rate of drawing the scene encompass a large percentage of the game's rendering time, the game can keep a running profile of how long it took to draw a frame, and if it saw it took longer than desirable, the next frame can render to a smaller portion of its offscreen framebuffer and adjust the scaling metrics accordingly (fewer pixels=faster frame rendering). The intention being that rather than scene complexity causing the framerate to drop, it instead reduces the internal render resolution by some percentage, adding a slight scaling blur (not unlike using a lower screen resolution) to retain smooth motion. The advantage here is that it's not stuck to a predefined resolution list, and the UI elements (which are often very cheap to draw) can stay at full resolution. The game can also cap the resolution scale, or set a static scale via game options for user choice.
This also works the other way around, too. Rather than lowering the internal resolution below the screen size, you can increase it above the screen size to enable a form of super-sampling anti-aliasing (SSAA), which if you have the power to spare, is far superior to the more common MSAA or FXAA techniques.