FAA-16 Anti-aliasing
Anti-aliasing with 16x anisotropic filtering
Aliasing - often referred to as "stair casing" or "jaggies" - is the jagged-edge effect that occurs along the edges of lines and polygons. This undesirable effect happens because there are not enough pixels available on a typical monitor to properly display mathematically smooth lines and polygon edges. When a 3D scene is transposed onto a monitor's pixel grid, or raster, each pixel is colored according to whether or not it is covered by an object in the scene. Aliasing occurs because the raster system does not properly handle the case in which a pixel is only partially covered. Partially covered pixels occur along the edges of objects and are referred to as edge pixels or fragment pixels. The mishandling of fragment pixels results in harsh, jagged color transitions between an object’s edge and the background. Antialiasing techniques attempt to smooth jagged edges by properly handling fragment pixels (i.e. adjusting the pixel color according to the amount of pixel coverage).
The problem with current methods of anti-aliasing is that the filters do not just filter the jagged edges, but also filter out everything in-between them. Textures that weren’t meant to be anti-aliased end up going through the same filter processes as edges, and consequently end up looking blurred and discolored. Matrox eliminates this problem by employing a fragment detection system. This system only detects areas with fragment pixels and applies only those pixels through the AA system.
![Matrox Parhelia-512 Preview [ Grrr... @ 640 x 479 ] > View Full-Size in another window.](images/15-s.jpg) Grrr...
|
|
![Matrox Parhelia-512 Preview [ Fragmented pixels isolated @ 640 x 480 ] > View Full-Size in another window.](images/16-s.gif) Fragmented pixels isolated
|
|
The above scene in 3DMark2001 demonstrates how the FAA-16 (Fragment Anti-Aliasing-16X) system works. Notice the second picture only displays those pixels that belong to object edges. Matrox’s FAA-16x identifies fragments by inspecting triangle edge pixels with 16x sub-pixel accuracy to determine their pixel coverage: a pixel is either: not covered, fully covered, or partially covered (i.e. a fragment). This information is then used to determine whether or not the pixel should be discarded, placed in the frame buffer, or sent to the FAA-16x unit.
![Matrox Parhelia-512 Preview [ Flying with turbulance @ 640 x 480 ] > View Full-Size in another window.](images/17-s.jpg) Flying with turbulance
|
|
![Matrox Parhelia-512 Preview [ I can see clearly now the rain is gone... @ 640 x 480 ] > View Full-Size in another window.](images/18-s.jpg) I can see clearly now the rain is gone...
|
|
All non-fragment pixels are immediately written to the frame buffer, while all fragment data is collected and stored in a fragment buffer. The fragment buffer maintains fragment lists, which contain information about a particular fragment pixel. Specifically, the fragment list stores sub-pixel coverage and color information for each of the edges that intersect the pixel.
The FAA-16x unit continuously updates the fragment buffer to determine the final representation of true scene fragments. The fragments are then combined and the final pixels are written to the frame buffer to complete the frame. While the fragment pixels are in the FAA-16x buffer, it goes through the AA process, and the final smoothed pixels are re-applied to the image, resulting in an astonishingly sharp image that produces no blurs in important areas.
![Matrox Parhelia-512 Preview [ Uber anti-aliasing @ 902 x 489 ] > View Full-Size in another window.](images/19-s.jpg) Uber anti-aliasing
|
|
While NVIDIA’s Accuview and 16x anisotropic filtering is excellent, it still ends up slightly blurring areas that aren’t edges, and so the resulting image isn’t as sharp where it needs to be. Note that Matrox’s FAA-16 system isn’t perfect itself as there will naturally be texture pixels that are the same as fragmented pixels. For this, the FAA-16 doesn’t work as well. But in most cases, as demonstrated in the 3DMark scene, only about 3.2% of the pixels were fragmented. The end result is that all fragmented pixels are anti-aliased, and those that weren’t meant to be, do not make up a large percentage of the image enough to make a noticeable difference in image quality.