That sounds a little too good to be true, but still, my interest is piqued. Given that a whopping 77% of TR readers have monitors with a resolution of 1920×1200 or lower, I suspect DSR might become a very popular feature among PC gamers. Naturally, then, I’ve decided to take a closer look at DSR, to see exactly what it is, how it works, and what sort of images it produces.
So DSR is supersampling, right?
Let’s start at the beginning. In graphics, antialiasing is any of numerous methods intended to deal with a fundamental problem. GPUs are attempting to represent objects with all sorts of funky contours, from diagonal lines to curved surfaces to complex, irregular shapes, yet the final images must be mapped to a regular, fixed grid of square pixels. That’s less than ideal. The human eye does a spectacular job of recognizing patterns, so we tend to fixate on the jagged edges and crawling effects caused by mapping irregular shapes to a regular matrix of pixels.
Today’s graphics card control panels and in-game settings menus are littered with a dizzying collection of antialiasing options intended to address this problem. The various methods generally represent different sets of tradeoffs between image quality and performance.
As I noted in my initial review of the new GeForce cards, I’ve been part of a small chorus of people calling on Nvidia to enable supersampled antialiasing in their graphics control panel for some time now. Supersampling is the gold standard of antialiasing methods in terms of image quality and is widely used in offline rendering by the likes of Pixar. The performance hit is pretty drastic, though: 4X supersampling generally takes four times as long to render. Graphics cards used to offer a supersampling option in their control panels a matter of course, but SSAA has fallen out of favor as more efficient edge-based AA methods like multisampling have grown more popular.
Happily, with the abundant power offered by the GeForce GTX 970 and 980, Nvidia has decided to expose an extra-high-quality rendering mode once again. DSR isn’t quite supersampling, but it is pretty closely related.
Supersampling is often described as rendering a scene at a higher resolution—something like 2X or 4X the number of visible pixels—and then scaling the image down to fit the display. That’s not a bad way to visualize what’s happening, but in a very nerdy sense, that description isn’t entirely accurate. Supersampling is really about taking multiple samples from different locations within the same pixel and blending them in order to get a higher-fidelity final result. Proper supersampling can grab samples from anywhere within a pixel, and the best routines may use a rotated grid or quasi-random sample pattern in order to achieve better results. Even the old 3dfx Voodoo cards, from back in the early days of 3D accelerators, took their samples from a rotated grid.
Oddly enough, Nvidia’s DSR really is about rendering a scene at a higher resolution and scaling it down to fit the target display. If you ask DSR to render a game at 4X the native res, say at 3840×2160 when the target display is 1920×1080, then the result should be similar to what you’d get from 4X supersampling.
The benefits are the same. The extra sample info improves every pixel—not only does it smooth object edges, but it also oversamples texture info, shader effects, the works. The performance hit is the same, too. The GPU will perform like it would when rendering to a 4K display, perhaps a little slower due to the overhead caused by scaling the image down to the target resolution.
The twist with DSR is that it can scale images down from resolutions that aren’t 2X or 4X the size of the target display. For example, DSR could render a game internally at 2560×1440 and scale it down to fit a 1920×1080 monitor. That’s just… funky, if you’re thinking in terms of supersampling. But it does seem to work.
In order to make DSR scale down gracefully from weird resolutions, Nvidia uses a 13-tap gaussian filter. This downscaling filter is probably quite similar to the filters used to scale video down from higher resolutions, like when showing a 1080p video on a 720p display. The fact that this filter uses 13 taps, or samples, is a dead giveaway about how it works: it grabs samples not just from within the target pixel area but also from outside of the pixel boundary.
We’ll get into some examples shortly, but the effect of blending in info from neighboring pixels is easy enough to anticipate. This downscaling filter will blur or soften images somewhat, granting them a more cinematic look. The effect is similar to the tent filters AMD used in its old CFAA scheme or, more recently, to the kernel employed by Nvidia’s own TXAA technique.
|GeForce 8800 GTS
|Radeon HD 2900 XT
CFAA 8X – 4X MSAA + Wide tent
Some PC gamers seem to have a strong negative reaction to anything that reduces the sharpness of on-screen images, which is probably one reason why AMD sadly doesn’t offer CFAA with tent filters any longer. I happen to think Nvidia is on the right track here, though. In motion, from frame to frame, these softer images result in less high-frequency noise or sparkle. The images produced by the DSR filter convey a sense of solidity and consistency that I find very pleasing. Unfortunately, I can’t really demonstrate that reality using static screenshots or compressed video; you’ll have to try DSR for yourself in order to see what I mean.
Anyhow, that’s enough theory without many concrete examples—my apologies for that. Let’s look at how to enable DSR and what sort of images it produces.
Making use of DSR isn’t too terribly complicated. You need a Maxwell-based GeForce video card, like the GTX 970 or 980, and a relatively low-res display. The DSR options aren’t available with a GTX 980 connected to a 4K monitor, but they do show up at 2560×1440 and below.
To find them, navigate to the “3D settings” section of the Nvidia control panel.
You can then choose which DSR modes will be exposed to games by checking a series of options in a dialog box. I turned ’em all on, so I could choose from a whole host of DSR resolutions up to 3840×2400—four times the native res of my 1920×1200 display.
The “smoothness” slider lets you control the sharpness or softness of DSR’s downscaling filter. The default of 33% works well, in my opinion, but it’s possible to drop the “smoothness” to 0%, which will be very sharp and noisy, or to 100%, which is pretty smeary. I have some examples of what happens when you tweak this slider coming up.
After you’ve enabled DSR in the control panel, it will “fool” your games by offering them resolutions higher than the display’s native capacity. The example above comes from Guild Wars 2. I’m able select from seven different resolutions that are higher than my display’s native size.
First-world DSR problems
Once you’re using a high-res DSR mode, you’ll be faced with some of the same problems that owners of 4K monitors often see.
Not all games are well-equipped to handle really high-PPI (or effective PPI) displays. Guild Wars 2 has a number of different interface size options, but even the largest one results in some pretty tiny icons and a minuscule mini-map in the example above. The situation is improving as newer games adapt to a high-PPI world, but remember that DSR is most likely to be a live option with older games, those with less demanding GPU requirements than brand-new, top-shelf titles. These issues vary with the type of game and the sort of interface it uses, though. I suspect quite a few older games will work just fine.
Then again, not every new game is demanding enough to make DSR impractical. For the sake of testing, I eliminated all doubt on this front by doubling up on GTX 980 cards.
Yes, that’s right, I used dual GTX 980s in SLI to drive a 1920×1200 display.
That may sound like overkill, but remember that the cards are rendering internally at 3840×2400—and 4K resolutions are still challenging for any single-GPU config. With two GTX 980 cards, Unreal Engine 3 titles like Thief are not a problem.
Other games, like Guild Wars 2, Tomb Raider, and Battlefield 4, need every ounce of power that both of these GM204 GPUs could muster and sometimes still want more.
Notice above that I’ve included results from a native 4K display (at 3840×2160). As you can see, using DSR at 3840×2400 and scaling down to our 1920×1200 display for output is slightly slower than rendering natively at 4K.
DSR image quality in action
You can’t capture screenshots of DSR’s output using traditional software tools. You’ll just end up with a high-res screenshot, not the native-resolution downscaled result. In order to grab DSR images, I fired up my FCAT rig and captured five-second-long snippets of completely uncompressed 1920×1200 video to a quad-SSD RAID 0 array. I was then able to choose an appropriate screenshot from each video clip. That’s what you’re seeing below.
There are lots of screenshots in these comparisons. You can click the buttons beneath the images in order to switch from one shot to the next. We’ll start with a simple example from Guild Wars 2 showing some high-contrast edges. We have examples below from the display’s native 1920×1200 resolution and several DSR modes, up to “3840 DSR” or (rendered internally) 3840×2400. I’ve also added examples using GW2‘s built-in “supersampling” option, its built-in FXAA post-process antialiasing filter, and the combination of 2560×1440 DSR with FXAA.
Flip through the screenshots, and you’ll see the obvious jaggies in the first image start to become smoother as the internal DSR resolution rises. The dark, near-horizontal edge across the bottom of the frame is a nice litmus test. The fine geometry of the vines hanging down on the left side of the shot is better resolved by the higher-res DSR modes, too. Also, the silhouettes of the leaves on the right of the image become smoother and more organic in the higher DSR resolutions.
Now I’ll ruin it for you. Look at the vine that shoots diagonally across the bottom right corner of the screenshot. Now look at it in 3840 DSR mode. You’ll notice that there’s kind of a dark halo effect around the vine in DSR. It’s worst in the 3840 mode since the sky texture happened to be brighter, resulting in higher contrast, as I pulled that screenshot. That’s one downside of DSR’s gaussian downscaling filter. I don’t think it’s the end of the world, but it’s not ideal, either.
I’m not quite sure what GW2‘s built-in supersampling option is doing—perhaps it’s 2X supersampling?—but it’s not very effective at eliminating jaggies.
FXAA is a different case. Created by Timothy Lottes while he worked at Nvidia, fast approximate antialiasing examines the frame after it’s been completely rendered, detects edges in the image, and smooths along them. FXAA is very fast—the performance overhead is almost negligible on a high-end GPU—and can be quite effective, but it doesn’t know anything about the underlying geometry in a frame; it only knows about objects at the pixel level. As a result, FXAA can lead to subtly shifting silhouettes from one frame to the next. I’ve noticed this effect in shooters where there’s a gun positioned in front of the camera. The weapon’s outline can subtly morph as it bobs around. I’ll show you another one of FXAA’s weaknesses shortly. That said, FXAA is quite effective in the static shot above.
FXAA is even more effective when combined with DSR at 2560×1600. The dark, near-horizontal edge in that shot is almost ridiculously soft and smooth. There’s nothing wrong with layering on multiple AA methods that work differently. Doing so can produce stunning results.
This next example shows us how well the different AA modes resolve fine geometry. Look especially at the ropes stretching between the tips of the windmill’s blades as you cycle through the images. Also concentrate on the arrow-like tops of the masts supporting those blades.
The reality becomes immediately obvious: without AA, the ropes are a blotchy, partial mess. Adding FXAA to the mix—with its ignorance of the underlying geometry—does nothing to help the situation.
With more internal samples, DSR is another story entirely. The ropes look a little better at DSR 2560×1600, and at DSR 3840×2400, they’re vastly improved. Although the difference is apparent in screenshots, it’s even more dramatic in motion. Without DSR, the ropes seem to sparkle, and portions of them disappear and reappear as the mill rotates. At 3840 DSR, the ropes appear properly as solid, fine silhouettes moving through the sky.
I’ve gotta say, though, I went back and looked at this same scene on a true 4K monitor. Yeah, uh, that’s even better, to put it gently.
More DSR image quality in action
We’ll use this sample scene from Skyrim to demonstrate the impact of tweaking DSR’s “smoothness” slider. Each of the images comes from DSR 3840 downscaled to a 1920×1200 native resolution.
The differences between the individual steps can be difficult to detect, so you might want to start by clicking on “0%” and then on “100%” to compare between the extremes. I see the contrasts most readily in several places. For edge antialiasing, watch the high-contrast edges around the dude’s cloak and around that dragon thingy on the right. To see changes in sharpness elsewhere, watch the stiches on that guy’s cloak and the interior texture on the wooden beam to the right.
My sense is that Nvidia’s default of 33% smoothness is pretty soft. That choice works out well along the high-contrast edges; those look feathery smooth in the example above. The wood texture on that right-hand beam does lose some of its definition, though, compared to the 0% or 15% levels. So do the stitches in that cloak. As I’ve said, I really don’t mind this minor loss of sharpness, since the softer images produce less sparkle and crawl while in motion.
The loss of definition is even more pronounced at the 66% and 100% smoothness settings, and it begins to look like overkill. I suspect that these higher amounts of blurring might become useful when scaling down from weird DSR ratios like 1.5X or 1.7X. In our example, we’re scaling down from four times the native resolution, so the sharper filter settings are sufficient to make things look nice.
While we’re on the subject of smoothness and blurring, let’s have a look at this same scene using some other AA methods.
Check out the wood grain on that right-hand beam in the shots above. Flip between the native-res or MSAA screenshots and the FXAA one, and you’ll see that FXAA blurs that texture considerably, likely because it detects the grain in the wood as edges and wants to smooth them. Whoops.
Next, watch the wood grain as you flip between the other images and the DSR 3840 shot. Although DSR does soften the final image somewhat, it also samples the underlying texture multiple times per pixel. The result is a more detailed rendition of the wood grain than in any of the other shots. Also, that wooden surface should be represented more consistently from one frame to the next, even as the camera shifts, since DSR pulls multiple samples from the underlying texture.
For my next trick, I’m going to try looking at AA methods using an example from a busy, low-contrast scene. Kids, this is high-risk behavior, so don’t try it at home. Here’s a shot from Crysis 3 with a ton of on-screen detail. This sort of thing presents a formidable challenge for most current AA techniques.
I’ve circled a few areas in this scene where I’d like to focus our attention. The mess of tree branches and foliage on the left is complex and organic. Without AA, it’s just kind of a pixelated mess. In the middle of the shot, the tree branch full of tiny, single-pixel leaves looks like it’s being viewed through a screen door; in motion, these leaves will shimmer and pop unrealistically. On the right is a series of near-horizontal edges that are marred by jaggies.
Let’s talk first about the branches on the left. As we move from the native resolution to 2560 DSR and then to 3840 DSR, two contrasting things happen. The areas of the screen stippled with single-pixel leaves become softer and less contrasty, while the darker tree branches become more clearly defined. The smallest branches, made of fine geometry, are easier to pick out. Pretty much the same is true of the tree branch and leaves in the middle of the shot, too.
On the right, the edges in the building look a little blurry at 2560 DSR, but switching to 3840 DSR increases the clarity of the image while further reducing jaggies.
Overall, my takeaway is that DSR—especially at a 4X ratio—offers a considerable improvement in image quality for this extremely complex scene.
Crysis 3 has a couple of other popular AA methods built in, so I’ve included screenshots from them. SMAA is a post-process AA method similar to FXAA, but its 2X mode incorporates some spatial multisampling, as well. 2X SMAA somewhat reduces the jaggies on the building ledge, but it doesn’t clarify the fine geometry in the leaves and branches nearly as well as 3840 DSR.
Nvidia’s TXAA combines multisampling with a couple of tricks: varying sample patterns temporally and borrowing some samples, lightly weighted, from neighboring pixels. In this last respect, it’s similar to DSR’s downscaling filter. As you can see, TXAA softens on-screen images somewhat. The results, I think, are pretty darned good. TXAA looks strikingly similar to 2560 DSR in this example, and it handles nearly everything well, even the fine geometry in the tree branches on the left.
TXAA has to be integrated into the game engine in order to work, and it’s only available to owners of GPUs in Nvidia’s Kepler and Maxwell families. If it’s an option for you, though, it’s worth considering. I’d say TXAA is a nice consolation prize for owners of Kepler-based GeForce cards who can’t yet get access to DSR.
The final verdict
Now that you’ve seen DSR in static screenshots, I hope you can begin to appreciate what it does. I’m not sure I’d say it gives you 4K image quality on lower-resolution displays, but DSR can offer tangible and sometimes dramatic improvements in fidelity. Other AA methods sometimes come close, as we saw with TXAA in our Crysis 3 example, but DSR at four times the native resolution offers the best image quality currently available without hacking somebody’s drivers. The combo of 4X oversampling for every single pixel and soft scaling to reduce temporal noise is pretty spectacular.
Just keep in mind that it’s expensive. Rendering a scene in DSR’s 3840×2160 mode is at least as taxing for the GPU as driving a native 4K display. You’ll want to use DSR in cases where a game, even at its highest quality settings, doesn’t present any real challenge for your video card otherwise. Happily, the GTX 970 and 980 are fast enough that such situations shouldn’t be terribly rare.
For those more demanding scenarios where DSR isn’t appropriate, Nvidia has another trick up its sleeve known as MFAA. I discussed it briefly here in my GTX 980 and 970 review. MFAA promises the quality of 4X MSAA at the performance cost of 2X MSAA by employing various forms of dark magic. Unfortunately, we’re still waiting for Nvidia to deliver a driver with MFAA enabled. Once they do, hopefully we can take a closer look at it, too.
I have to scale down my sentences to 140 characters in order to fit them on Twitter.