Improving Image Quality And Speed: DSR and MFAA
Older or well-coded games such as Dark Souls II and Grid Autosport run just fine on high-end graphics cards, often rendering at an average 100fps at a 1080p resolution. On the other hand, graphically-intensive games such as Battlefield 4 and Crysis 3 run slowly when image quality settings are set to high or ultra-high. In an ideal world you'd want to improve the IQ of games that run quickly natively, so they look as good as possible, while also being able to increase the speed of graphically-taxing games without diminishing that lovely IQ.
Now, as much as we eulogise about gaming on high-resolution monitors - 4K, anyone? - the majority of users still run with 1,920x1,080 (1080p) screens. So how does one increase visual fidelity and/or speed; it's bit of a conundrum, isn't it? Nvidia is also introducing a couple of new software-based techniques to make games look better and run faster on GeForce hardware, particularly for users with 1080p monitors.
Dynamic Super Resolution (DSR)
Answering the question of visual quality on easy-to-render games first, Nvidia is debuting a technology called Dynamic Super Resolution (DSR).
Taking a 1080p monitor as an example, DSR works by increasing the native resolution at which the scene is rendered. In the best-case scenario, a GTX 980 is set to render the game at a 4K resolution in the framebuffer. Of course, a 4K image cannot be displayed on a 1080p screen, so a 13-tap Gaussian filter is used to downsample the frame back down to 1080p and exported out the monitor.
The benefits of such an approach are very subtle. A higher internal resolution enables more sample points to be taken, improving the visual accuracy in cases where there's a large amount of detail. DSR reduces the 'popping' associated with swaying grass, for instance, and, from what we saw, makes the frame look smoother.
DSR on the right, click to enlarge
Perhaps the technology can be best imagined as rescaling a 4K photograph down to 1080p through the use of an efficient, high-quality filter. There are no more pixels when compared to an image of the same resolution, but visuals are a touch better.
The obvious downside to DSR is that internal rendering at a higher resolution beats up on framerate. Rendering at 4K, as you will see in performance benchmarks, can reduce framerate by up to 75 per cent, plus a little overhead for the Gaussian filter. Nvidia sees it a different way, where burning fps isn't a problem if you have a surfeit to begin with.
This isn't wholly new technology, mind, as hacks have been in place that force the GPU to render to a higher internal resolution and downsample to match what is outputted, but the use of poor filters has limited the appeal of such an approach.
DSR is built into GeForce Experience, or can be set manually in the control panel. There's no need to go all the way up to 4K internal rendering; Nvidia provides a bunch of intermediate DSF factors. On a 1080p screen these range from 1.20x native resolution, 1.50x, 1.78x, 2.00x, 2.25x, 3.00x and, finally, 4x (3,820x2,160).
Multi-Frame Anti Aliasing (MFAA)
Switching gears, Nvidia is also introducing a new antialiasing method known as Multi-Frame AA (MFAA). Understanding MFAA requires knowledge of how the underlying AA technology is used to improve visual quality by reducing jaggies present in standard-resolution frames.
The current pre-stored standard, Multi-Sample AA (MSAA), uses a technique that tests for edges (coverage) and determines the average colour at that point by taking a number of subsamples of the pixel straddling the edge. 2x MSAA takes two samples while 4x MSAA grabs four samples per pixel. Average colour information from these subpixels is downsampled using a filter and presented on-screen.
This is why MSAA does a good job of making edges look smoother - the at-edge pixel is coloured properly to avoid the staircase effect of harsh colour transitions. The more subpixel samples taken the better, leading to alias-free edges, but MSAA remains expensive in terms of memory-bandwidth usage and ROP utilisation.
Nvidia's MFAA aims to provide 4x MSAA-like image quality at the cost of 2x MSAA. MFAA works by using multi-pixel programmable sampling. The key is the programmable nature of sub-pixel sampling, as the MFAA algorithms can place the sub-pixels - the red and green dots in the above picture - at various locations. In a 4x4 grid of a pixel, MFAA can choose between 16 different locations.
Having programmable location is the first part. MFAA's trick is to use just two coverage subsamples but produce the same kind of result as having four samples. How? The solution is in the name.
In frame n-1 two MFAA subsamples cover each of the four pixels surrounding the edge. In the subsequent frame n, the location-programmable MFAA subsamples are rotated to cover two different points. It is this change of location that is important. Changing the coverage points influences the average colour, albeit on two different frames. The final task is in combining the average colour outputs of the two frames by using a temporal synthesis filter and then displaying the twin-frame result on screen. Nvidia is still achieving four subsamples per pixel, but it is using two subsamples over two frames instead of four over one.
Reiterating the crux, what's really happening here is that MFAA is approximating 4x MSAA by using two samples, located in two different sub-pixel areas, on two consecutive frames. The end result is a coverage pattern that is identical to 4x MSAA but uses only two samples per pixel (aka 2x MSAA) to achieve it.
The cost of implementing 4x MFAA is a hair higher than 2x MSAA because the temporal synthesis filter has some computational overhead. Still, Nvidia claims an average framerate speed-up of around 30 per cent compared to traditional 4x MSAA.
Those of you who are paying attention will wonder, just as we did, how MFAA handles motion? After all, this technique is based on averaging the two sets of subsamples from two consecutive frames. The colour of the pixels can change over frames, throwing MFAA out of kilter, particularly if the frametimes are long, but Nvidia's Tom Petersen claims this new technique uses advanced algorithms to mask frame-to-frame variation. We'll know more in a few months' time when Nvidia provides more details.
MFAA isn't implemented in the latest Nvidia drivers yet, but just like DSR, which is present in the ForceWare 344.07 set, both software-based technologies should be available on other GeForce cards in the near future.