Sample Types

The most straightforward sampling-based approach to anti-aliasing an image is to perform all computations that would be done for a "real" pixel for each sample. While this is highly effective at removing all kinds of aliasing artifacts, it is also a very computationally expensive method, as it increases the pixel shading, rasterization, memory bandwidth and memory capacity requirements N-fold for N samples. Techniques where all computations are carried out for each individual sample in this fashion are called super-sampling anti-aliasing (SSAA).

Around the turn of the century, multi-sample anti-aliasing (MSAA) was introduced in graphics hardware as an optimization of super-sampling. Unlike the SSAA case, with MSAA each pixel is only shaded once. However, depth and stencil values are computed once per sample, allowing for the same anti-aliasing quality regarding geometry edges as SSAA at a significantly lower performance cost. Also, further performance improvements, especially regarding memory bandwidth usage, are possible if Z and colour buffer compression are supported – this is the case on all modern GPU architectures. Due to the way sampling is optimized, transparency, texture and shader aliasing cannot be directly addressed using MSAA.

A third type of sampling was introduced by NVIDIA in 2006 with coverage sampling anti-aliasing (CSAA). Like MSAA decouples shading from the per-sample evaluation of depth and stencil values, CSAA introduces additional coverage samples, which do not store any colour, depth or stencil values but only a binary coverage value. These binary samples are used to guide the blending of existing MSAA samples. As such, CSAA modes add coverage samples to MSAA modes, but it does not make sense to perform coverage sampling without also producing multiple MSAA samples. Three CSAA modes exist on modern NVIDIA hardware: 8xCSAA (4xMSAA / 8 coverage samples), 16xCSAA (4x/16), 16xQCSAA (8x/16) and 32xCSAA (8x/32). AMD offers a similar implementation with 4x EQAA (2x/4), 8xEQAA (4x/8) and 16xEQAA (8x/16). The additional coverage samples usually only have a small impact on performance.