R600: Finally DX10 Hardware from ATI

Render Back-Ends - AA To Z

Antialiasing

Antialiasing (AA) is effectively a post-processing filter that is applied to remove high frequency signals from the rendered frame. Pixilated or jagged edges do not exist in the real world. These anomalies can stick out like a sore thumb while playing a game or watching videos. Samples are taken of each pixel and a selected method is chosen to smooth (blur) out these "jaggies" based on the sampled data. In the past there have various forms of AA and here is a list of what ATI could do:

Multisampling
Programmable sample patterns
Gamma correction resolve
Temporal AA
Adaptive Supersampling/Multisampling
Super AA (CrossFire)

Taking more samples does not mean you will end up with a better image. Like most effects, there is a diminishing return on the image quality improvements and the more you sample, the more it impacts performance. While it is certainly part of the overall process, the end result is to display an image in an efficient and expedient fashion. Part of AA is a resolve filtering process that takes the samples and generates all of the final pixels. In the HD2000 series, ATI made it all programmable using the shader resources available. There is hardware support in the raster back end as well. This hybrid approach to AA allows for both traditional methods (box filter) as well as the ability to generate types of filters (tent filters and things yet to be created).

These new formats are called Custom Filter AA (CFAA) on the HD2000 series. In DX10 - in particular DX10.1 which is coming soon - it is possible to access the samples of an antialiasing format. That means that applications could do their own custom filters. Most hardware filters rely on restricted boundaries and/or fixed weights. Under these kinds of constraints, there are diminishing returns on the results from taking more samples. ATI states that "it is all about building a better filter" and only does custom filters on the HD200 series instead of hardware-dependent box filters.

Once you have all of the fragments (samples), it needs to be resolved down to one single pixel that is displayed on the screen. This involves a filtering operation, which is typically done by using a box filter to get the samples back. Now, instead of only doing a box filter, ATI can basically use anything you want. Shaders working together with some custom hardware in the raster back end can do shaders that can go outside the pixels or weighted sums and can be adaptive. This leads to filter kernels that can adapt to the characteristics of each pixel and non-uniform sample weights for areas that could use more samples. This comes in the form of an edge detection filter that ATI is working on.

This is one of the examples of the filters ATI is offering but all of them are software that can be downloaded. There is a whole team of people creating new filters and other things that are cool and more useable. It will be the subjective tradeoff of image quality and performance. All of this will be available for DX9 software, whether forced on AA is used or not. ATI will only use the resolve filters that are there, so if the in game quality is 4xAA, you will get the custom filtering choice you selected in the control panel. It will work with HDR, stencil shadows and anything else you throw at it because resolve is done this way. It is the way the hardware is designed to resolve so there will be no need to patch the hardware. The theoretical limit of the types of image quality will be that of the level of performance desired.