It is often true that many paths can reach a destination. This is true in life with reaching success both financially and with members of the opposite sex, where different people will apply different approaches to doing so. Yet, while different paths are taken, all are potentially successful. But this isn’t a site about dating and finances, now is it? We are here to discuss hardware and games, so how does this relate?
Achieving a certain result in chip design can be accomplished by a variety of means. Pixel shaders, for example, can be approached from many different fashions. Not only that, but each method used can be configured in very specific ways for die size considerations and operation optimization. However, in this discussion we will not be looking at pixel shader architecture. Rather, today, we will discuss the use of coverage masks in fragment level anti-aliasing algorithms.
How does one relate taking different roads to anti-aliasing? Well just as with the pixel shader example that was mentioned, anti-aliasing can also be effective by using a variety of different techniques. With each method, the end result is effectively the same, yet each carries with it a set of advantages and disadvantages.
While this article is to focus on fragment level anti-aliasing algorithms, it is important for us to understand multi-sampling implementations as well. With such systems becoming standard on all NVIDIA hardware, and ATI now using it in their high-end RADEON 9500 and RADEON 9700 boards, it is quickly becoming the choice anti-aliasing technique of the graphics industry. Understanding this approach will allow comparisons to be made with fragment level approaches, and thus the determination of what implementation is most desired.
Multi-Sampling algorithms share many characteristics of super-sampling. Both render a scene to a high-resolution buffer and filter down to achieve the anti-aliasing effect. Yet, that is where the similarities end.
For this consideration, we will assume 4x anti-aliasing is being used. While multi-sampling can be implemented in several different fashions, we will only consider one such method.