Anti-aliasing (AA) is a feature available on all modern video cards. The purpose of AA is to smooth out the edges of objects from within the game world. AA is notoriously bandwidth intensive and the higher the level, the more bandwidth it uses. For example, 2x MSAA is half as memory intensive as 4xMSAA, and so on. There are many different types of AA in current video cards, these are:
- MSAA - found on both AMD and NVIDIA hardware
- Transparent AA - An NVIDIA only mode
- Adaptive AA - An AMD only mode
- CSAA - New mode found only on the Geforce 8 series.
They works (in most cases) by scaling up (twice in X and twice in Y) the image from it's intended resolution. Then the image is rendered, and then scaled back down. It should be obvious that the increase in rendered pixels is costly to performance.
But this isn't the whole story. When an image is calculated in the geometric domain it is infinitely perfect, no jaggies etc. It's only when the image is applied to a pixel grid and sampled once per pixel it becomes dependant on resolution. At this point, masses of information is disregarded. The best example i can think of is a digital camera. You take a snap shot of an infinitely detailed world at a pre-determined resolution of 320x240. The digital camera then takes 76,800 sample points from this infinitely detailed world to create the image. Masses of information is disregarded, and the end result is never as brilliant. The more sample points you can use, the closer to perfection you can get. This problem is known as "aliasing", and anti-aliasing is a method of combating the problem.
So, using AA really means using more sample points over the intended screen resolution, thus the accuracy of the image is increased. It is then down sampled to the screen resolution before its sent to the back buffer. The end result is a much more accurate image than if you had simply rendered using a single sample point per pixel.
There are in fact multiple sample types which need to be taken to render a scene on graphic cards, such as Z and colour values, and this is where the differences lie in the various methods of AA, some shader types are sampled more, and others are not increased. I'll explain how each works as we go.
- MSAA, why SSAA isn't used
SSAA (super sampled AA) at the full scene level is not available on any current cards as it is far too demanding. As an example, let's look at what happens if you were to enable 4xSSAA.
As mentioned, the target screen resolution is increased by a factor of 2 on both X and Y, so if you were running 1024x768 with 4xAA it would in fact render the image at 2048x1536. SSAA works by taking 4 Z and 4 texture samples per pixel (the 1024 res, not 2048) to create the end colour values accuracy. The end result is that SSAA is four times more costly than no AA.
MSAA works in much the same way as SSAA, but it takes 4 Z and 1 colour sample per pixel. This of course means it is far cheaper to use than SSAA. It still must store 4 colour values in memory however, so it's only less costly in fill rate terms, the memory and bandwidth requirements are just as high.
MSAA is the standard anti-aliasing method that is enabled in game or from the respective control panels. As already mentioned, MSAA only calculates 1 texture sample per pixel. This has an adverse affect on image quality when geometric shapes are not the only things rendered in the scene, such as alpha textures, something quite common these days. First let's take a look at the visual benefits that simple MSAA bring to the tables over no AA, the foibles of basic MSAA will be covered after this.
Obviously, if you are not increasing the colour sampling rate over a non anti-aliased scene, some objects will not benefit from MSAA, and the most worrying of these are the extensively used alpha textures, more on this as we venture into Ad and Tr AA.

In the image above you should clearly be able to see the quality difference. With no AA the edges of objects like the hand rails which flow off into the distance are very jaggy, whereas with 4xAA enabled they are much cleaner and definable. As you increase the AA level, the per pixel accuracy improves, though with diminishing returns past 4xAA.
- AdAA & trAA - the Solution to MSAA's Drawbacks
Adaptive anti-aliasing (AdAA) and transparent anti-aliasing (TrAA) are both pretty much the same thing, the only difference is that AdAA is the name ATI/AMD use, and TrAA is what NVIDIA use. The reason these modes exists as an option is a direct result of the downsides inherent when using MSAA. To enable these, you have to venture into the respective control panels. This is an extension to MSAA, not a replacement, if you enable this you end up with Tr or Ad MSAA.
|
An alpha texture in naked form |
As previously explained, MSAA does not increase the amount of colour samples regardless of the MSAA level, it will sample 1 colour value per pixel, period. This does cause image quality issues when certain visual techniques are used. Alpha textures, predominately used for things like wires, fences, and foliage, are a method of creating large polygons and applying a transparent texture on the top. A rather crude example is to imagine a wire fence, the actual wires inside the fence are not polygons, they are one giant texture mapped on a single polygon, the gaps which appear "see through" are alpha blended. If you were to see the texture in it's true from, you would find the wire you see in the game with all the gaps as a specific colour value, usually an easy to spot pink. When the polygon in question is set to read this colour value as transparent, it will not render the value, it will remove it. The end result is a detailed fence without having to model it using polygons, its much more efficient.
The problem here is that we are working with colour values, not depth values (Z) and therefore with MSAA anti-aliasing doesn't take place on alpha texture based objects.
This is where TrAA and AdAA step in. It works by anti-aliasing samples taken from within polygons where transparent textures are used. Using MSAA + trAA is much less costly than applying AA to an entire scene, ala SSAA. Below we see an example of turning on AdAA over bog standard MSAA.
With simple anti-aliasing the fences (alpha textures) look exactly the same as if no anti-aliasing were applied. Once transparent AA is applied however, the fences are greatly improved.
NVIDIA offer the option of MS or SS transparent AA in there control panel, while ATI offer a smart combination of the two, AdAA. THis feature is very much worth turning on.
- CSAA, the answer to running 16xAA.
CSAA (coverage sampled AA) is a Geforce 8 series only feature. Whereas MSAA was a direct response to SSAA being far to expensive performance wise, think of CSAA as a response to MSAA being too costly as we move beyond current AA levels and onwards to 8x and 16x AA. Even with the increase of gpu performance, 16xMSAA is still far too demanding. You will recall that MSAA cuts the fill rate strain by only sampling one colour value per pixel. CSAA does similar things.

In the above table taken from the G80 white paper, you can see how the different methods decrease the performance hit as you increase the AA levels by detaching the sample types and making them independent. With CSAA 16x you have the same amount of colour and Z samples taken as with 4xMSAA, but coverage samples are extended from 4 to 16.
The benefit claim NVIDIA, is that CSAA offers similar image quality to MSAA but with much less of a performance penalty, so for the first time we find 16x AA possible on mainstream graphics cards. AMD currently have nothing to rival this, but expect something similar with R600.
On the 8 series, you will find the following modes of AA, and i've included the amount of samples used for each in order of colour, Z, and coverage:
- 2x = MSAA (1, 2, 2)
- 4x = MSAA (1, 4, 4)
- 8x = CSAA (1, 4, 8)
- 8xQ = MSAA (1, 8, 8)
- 16x = CSAA (1, 4, 16)
- 16xQ = CSAA with (1, 8, 16)
To enable the CSAA modes is a bit annoying at present. The first thing you need to do is to enable AA in the game you wish to play (any mode will do). By doing this you make sure that AA is ran as the developer intended. Then in the NVIDIA Control Panel find "antialiasing - mode" and select " enhance the application". Now choose the CSAA level you want to use under "antialiasing - setting".
By doing this, you make sure AA is ran as it should be for the game (by making sure an AA level is chosen in the games menu) and then selecting you desired CSAA level in the control panel. Yes its annoying and tedious, but it's the only way to get it to work in current games. Future titles will allow you to select all modes of AA, including CSAA in the game menu's.