This is part three of a trilogy of articles investigating current AA techniques on modern hardware. In part one I compared the image quality of ATi’s and nVidia’s latest hardware. In part two ATi’s 4000 series was covered in more detail. Now with part three I’ll focus on nVidia’s GT200 series, whose anti-aliasing algorithms are identical to that of the 8000 and 9000 series. For this particular article I’ll use my GTX285.
While the purpose of this article is to compare nVidia’s AA modes to each other, great care has been taken to make the article’s format compatible with the ATi 4000 series investigation. That means you can compare the two articles if you wish, including the screenshots.
Hardware
•Intel Core 2 Duo E6850 (reference 3 GHz clock).
•nVidia GeForce GTX285 (1 GB, reference clocks).
•4 GB DDR2-800 RAM (4×1 GB, dual-channel).
•Gigabyte GA-G33M-DS2R (Intel G33 chipset, F7 BIOS).
•Creative X-Fi XtremeMusic.
•30” HP LP3065 (maximum resolution 2560×1600).
Software
•Windows XP 32 bit SP3.
•nVidia driver 186.18, high quality filtering, all optimizations off, LOD clamp enabled.
•DirectX March 2009.
•All games patched to their latest versions.
Settings
•16xAF forced in the driver, vsync forced off in the driver.
•AA forced either through the driver or enabled in-game, whichever works better.
•Since I’m on XP, all DX10 titles were run under DX9 render paths.
•Highest quality sound (stereo) used in all games.
•All results show an average framerate.
–~~~~~~~~~~~~–
Anti-Aliasing Introduction
In 3D graphics, aliasing occurs because of rasterization, the process of converting a scene from vector primitives (essentially infinite resolution) to screen space (finite resolution). Typical aliasing with 3D scenes includes shimmering, jagged edges, line crawling, wiggling surfaces, and similar.
A higher resolution helps to some degree because there are more pixels to interpolate across, but it’s still quite poor at reducing aliasing compared to current hardware anti-aliasing techniques.
Current 3D hardware AA operates on the basic premise of sampling multiple times for a pixel (as opposed to using a single sample), and blending said samples to form the final pixel. The resulting smoother gradients reduce aliasing.
Multi-Sampling Theory (MSAA)
Multi-sampling first debuted on nVidia’s GeForce 3, and is the most popular hardware AA technique currently used in consumer space. This method takes the concept of super-sampling but decouples the shader and texture samples, thereby saving fillrate.
It operates on the concept of rendering only the geometry at a higher resolution (as opposed to super-sampling which renders everything at a higher resolution), then calculating the final color based on whether multiple depth (Z) values fall on the edge of a polygon or not.
The disadvantage of this method is that it can’t address texture or shader aliasing (since it only anti-aliases polygon edges), but it’s extremely fast compared to super-sampling, and still shows huge improvements in image quality.
Generally speaking, unless you run a very slow GPU setup, you should try to run at least 2xAA, even if it means dropping the resolution a bit. Even 2xAA can provide a substantial improvement in image quality over no AA.
–~~~~~~~~~~~~–
nVidia’s MSAA
As was mentioned earlier, MSAA debuted in consumer space with the GeForce 3 which offered 2x rotated grid and 4x ordered grid modes. Since then nVidia has improved the technique several times. The GeForce 4 series moved the distribution of samples from the top-left of the pixel to cover the entire pixel’s area, while the GeForce 6 series introduced a rotated grid for the 4x mode.
Starting with the 8000 series, nVidia introduced 8x sparse grid MSAA and briefly took the MSAA crown until ATi’s 2000 series introduced the same thing a few months later.
Here are the sample patterns from a GTX285 (these are identical across the entire 8000, 9000 and GT200 product lines). Note that nVidia’s 8xQ setting is 8xMSAA.

nVidia GeForce GT200 Series Anti-Aliasing Investigation
The green dots are shader/texture samples, and in each case there’s only one sampled at the pixel’s center, as is typical with MSAA. The blue dots are geometry samples and you can see two, four and eight arranged in rotated and sparse grids. Both vendors do this because such a placement of samples ensures optimal coverage (maximum effective edge resolution).
–~~~~~~~~~~~~–
Coverage Sampling Anti-Aliasing (CSAA)
The 8000 series also introduced a new type of anti-aliasing called CSAA, using a new sample type called coverage. Coverage sampling is based around multi-sampling but further decouples information by removing Z (depth), stencil and color information, leaving only a yes/no value as to whether the sample lies within a polygon or not. These values then affect the outcome of the final blended color. Generally this technique is very good on first-class polygon edges where the 16x setting can rival the quality of 16xMSAA, but at a fraction of the performance hit and storage requirements.
However since additional Z/stencil values aren’t actually taken or stored (only whether the sample falls inside a polygon), CSAA loses effectiveness on edges shared by multiple polygons, and on stencil shadows. Should coverage sampling fail for a particular pixel, the scheme falls back to its base multi-sampling level.
Here are the sample grids for the three CSAA modes (thanks to Beyond3D for the original images):

nVidia GeForce GT200 Series Anti-Aliasing Investigation
Again the blue dots are multi-samples, while the red dots are coverage samples. Based on this information we can see that:
8x = 4xMSAA + 4xCSAA.
16x = 4xMSAA + 12xCSAA.
16xQ = 8xMSAA + 8xCSAA.
Note that nVidia counts multi-samples twice in their papers, once as multi-samples and once as coverage samples, so they list 8x as having eight coverage samples and 16x/16xQ as having sixteen. While this is technically correct, it’s also ambiguous so it makes sense to count samples based on their highest common denominator.
Most games cannot activate these modes directly, but there are three ways you can use them. Firstly, you can force them directly from the control panel. This should work in most games where forced AA works.
Another way is to set the control panel to enhance and set one of the three CSAA modes. Then set the game to use any level of AA (it doesn’t matter what it is), and the driver will give the application your AA level but only on surfaces the game asks for. Thus the enhance setting allows the user to gain the benefit of AA modes games don’t know about, without overriding how games perform AA on their surfaces. Note that enhance only works if the game sets a genuine MSAA level through the Direct3D/OpenGL API, so it won’t work with games that use custom shader-based AA.
And finally, a handful of games like Crysis and Half-Life 2: Episode 2 can set CSAA modes directly from the game.
–~~~~~~~~~~~~–
Combined Mode Anti-Aliasing (xS)
nVidia also offers full scene super-sampling on their single GPU configurations in the form of combined modes (xS). These modes combine traditional multi-sampling with ordered grid super-sampling to further enhance image quality. The notable advantage of super-sampling is that it anti-aliases all parts of the scene including shaders and textures, something pure edge-based schemes like MSAA and CSAA can’t do. The super-sampling component in these modes is obtained by rendering the entire scene bigger and then scaling down. Another advantage of super-sampling is that it stacks with anisotropic filtering and can increase the clarity of texture filtering. We’ll see an example of this later.
nVidia has a range of super-sampling modes, but here are the three that make the most sense:

nVidia GeForce GT200 Series Anti-Aliasing Investigation
There are eight, sixteen and thirty two blue dots representing the multi-samples, while multiple green dots (shader/texture samples) confirm super-sampling is in operation. 32xS has a truly extraordinary sample count, but we can also see it has the same super-sampling component as 16xS.
The components of these modes are as follows:
8xS = 8xMSAA + 2xSSAA.
16xS = 16xMSAA + 4xSSAA.
32xS = 32xMSAA + 4xSSAA.
–~~~~~~~~~~~~–
Transparency Anti-Aliasing (TrAA)
As I covered in my image quality comparison article, TrAA is a method of anti-aliasing alpha (transparent) textures (e.g. vegetation, wire fences, etc), something regular MSAA cannot do. It works by resubmitting the texture multiple times into the pipeline, shifting the location of the sample each time, later blending the samples into one.
nVidia’s TrAA has two modes: super-sampling and multi-sampling. Super-sampling takes regular super-samples and anti-aliases the entire texture, while multi-sampling only anti-aliases the edges of the texture that intersect with transparent areas. TrMS doesn’t work in all games and its effects tend to be very subtle, so it’s best used for noisy soft edges rather than ordered hard edges.
When TrAA is in operation, it operates at the same precision as the base multi-sampling level, so it’ll function just fine alongside CSAA, and its effects actually stack with the super-sampling component of the combined modes.
–~~~~~~~~~~~~–
Image Quality (MSAA/CSAA/SSAA)
For the image quality comparison, I’ve chosen an outside scene from the original Far Cry. Since AA’s main benefit comes during movement, these images have been zoomed in order to better show differences. I’d suggest loading the images into separate browser tabs and quickly switching between them. Also ensure browser image scaling is disabled.

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation
2xAA and 4xAA both provide noticeable image quality gains across all four edges over 0xAA and 2xAA, respectively.
8x is slightly smoother than 4xAA on all four edges.
8xQ looks slightly smoother than 8x on edges 1 and 4, but slightly worse on edge 3.
16x is slightly better than 8xQ on surface 4.
16xQ has the best looking edge 3 of the four CSAA modes, but edge 4 looks slightly worse than 16x’s.
8xS is better than 8x on all four edges, and is about the same as 8xQ overall. However the benefits of full scene super-sampling come into play too; the tree in the top left corner is smoother, and also the hut’s straw roof texture gains definition and clarity. This increased sharpness provides contrary evidence to those that claim super-sampling blurs 3D scenes because in this instance it’s doing the exact opposite.
16xS is about the same as 16xQ on the four edges, but perhaps slightly better on edge 4. Compared to 8xS the roof texture gains even more clarity and the tree gets smoother too, courtesy of the super-sampling component increasing over 8xS.
32xS looks about the same as 16xS except with edge 4, where it’s slightly smoother. Thus 32xS provides the smoothest chair edge we’ve seen today. The tree and roof texture remain identical to 16xS because super-sampling component is the same with both modes.
It should be worth noting that the edges in this scene represent the best case for CSAA, so the scheme is allowed to reach its full potential. In other scenes however (such as shared polygon edges and/or stencil shadows), the image quality will be closer to its base multi-sampling level, so results may vary. In these instances, 8xQ provides a more consistent gain in image quality than either 8xAA or 16xAA. Nevertheless, CSAA still represents a clear upgrade over 4xAA.
Getting back to the tree, even though it received some AA from the xS modes, I’m still going to test it with TrAA at it was designed with exactly this kind of scenario in mind.
–~~~~~~~~~~~~–
Image Quality (TrAA)
The tree is actually a transparent texture, likely a result of the game’s LOD system optimizing performance by reducing workload at distances. Because MSAA and CSAA only affect polygon edges, none of them impact the tree. The combined modes can because they anti-alias the entire scene, but let’s see how the tree looks with TrAA. Note that I could’ve used another scene with more alpha content, but by using the same scene, it becomes clearer how these AA techniques all come together as a total package.

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation
Even with just the thumbnails, you can clearly see changes to the color gradients as each level of TrAA is applied, but feel free to load the larger images if you like.
–~~~~~~~~~~~~–
CSAA Anomalies
I mentioned in the CSAA section that if coverage sampling fails for a given pixel, it falls back to the base multi-sampling mode. However in practice I’ve found a few rare cases where the AA quality is much lower than the base MSAA level.
Here’s an example from a zoomed shadow edge from Doom 3. You can see 16x actually looks closer to AA being off, while 4xAA is much smoother in comparison.

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation

nVidia GeForce GT200 Series Anti-Aliasing Investigation
This example is indeed visible to the naked eye while gaming; I actually spotted this while playing through Doom 3 again at 2560×1600, so I stopped the game to take some screenshots.
I’ll repeat that these situations are extremely rare, but are nevertheless interesting because CSAA theory can’t explain them.
–~~~~~~~~~~~~–
1680×1050
Now it’s time to see how these AA modes perform on nVidia’s current flagship single card. After seeing the 16xS figures below, you’ll quickly see why I didn’t bother testing 32xS.
Also I’m not going to benchmark TrAA for the simple reason that it depends entirely on the scene as to what kind of performance hit you’ll experience. The odd fence or grating won’t impact performance much, but large amounts of vegetation will incur a steep performance hit. For this reason, you’ll quickly know if your TrAA setting is playable or not just by playing your game.
To make it easier to digest the information, I’ve color coded the results into groups based on AA type. MS = multi-sampling, CS = coverage sampling, while SS represents the combined modes (super-sampling).

nVidia GeForce GT200 Series Anti-Aliasing Investigation
In Call of Duty 4, 16xAA is almost the same speed as 8xAA, and neither of them is much slower than 4xAA.
In Far Cry 2 we see the same thing with 16xAA and 8xAA that we saw in Call of Duty 4. We also see 8xS being about the same speed as 16xQ.
–~~~~~~~~~~~~–
1920×1200

nVidia GeForce GT200 Series Anti-Aliasing Investigation
In Bioshock, 8xAA and 16xAA are the same speed. Also 8xS is faster than 16xQ, and 4xAA is faster than 2xAA, interestingly.
In Fear 2 we again see 8xAA and 16xAA being almost even in terms of performance.
–~~~~~~~~~~~~–
2560×1600

nVidia GeForce GT200 Series Anti-Aliasing Investigation
In Doom 3 we yet again observe identical performance from 8xAA and 16xAA. Also there’s a huge performance hit from 8xQ which confirms the OpenGL performance issue on nVidia cards with this mode still exists. Additionally, 8xS is much faster than 16xQ.
In Far Cry 1 we again see 8xAA and 16xAA being very close in performance, and not much slower than 4xAA. We also see 8xS being faster than 16xQ.
And lastly, in Half-Life 2, we again see 16xAA and 8xAA being close in performance and not much slower than 4xAA. We also see 8xS being hugely faster than 16xQ, and for the first time 8xQ is faster than 8xAA and 16xAA.
–~~~~~~~~~~~~–
Conclusion
Some interesting findings have been made in this investigation. Firstly, 16xAA is a viable mode that improves 4xAA if you can’t reach 8xQ. It provides a visible benefit over 4xAA while not being much slower. It’s also basically the same speed as 8xAA so if you have enough performance, skip 8xAA and go straight to 16xAA; there’s really no reason to use 8xAA. CSAA can very rarely exhibit much poorer image quality than theory would suggest, but don’t let this put you off using 16xAA because it’s really quite good overall.
Secondly, 16xQ is hard to swallow. Its edge quality isn’t much better than 8xS, but the benefits of full scene super-sampling from 8xS are much more apparent than marginally increased edge AA at such levels. Also based on other tests I’ve run in the past, 8xS is much faster than 16xQ in the majority of situations, especially in older games. 8xS is also especially important in OpenGL games because nVidia’s TrAA doesn’t function in that API.
And lastly, 32xS is quite a fringe mode. It’s really too slow to use except in rare cases of very old games that are restricted to low resolutions. I would have also liked nVidia to increase the super-sampling component over 16xS to really make it stand out. Detectable edge improvements tend to rapidly diminish after 4xAA, but extra super-sampling is always useful.
This concludes the current trilogy of image quality articles focusing on AA, but hopefully the next round of DX11 cards from ATi and nVidia will give me something more to write about. I hope you’ve found the results of this investigation as interesting as I have.