
TAA, SMAA, FXAA, MSAA, or SSAA? Which one is right for you? Anti-aliasing techniques come in all shapes and sizes, ranging from cheaper shader filters (FXAA) to complex temporal accumulation methods (TAA). Let’s take a closer look at the most popular anti-aliasing technologies.
Anti-Aliasing: MSAA vs SMAA vs TAA
By now, you should already know what anti-aliasing does. It cleans up the artifacts and jaggies along the edges and intersections of thin objects. In the early days, multi-sampling and super-sampling were the most popular methods. They produce the best image quality (broadly speaking) at the cost of performance.

Super Sampling renders the entire image at a higher resolution and then scales it to fit the target resolution. You are essentially sampling the color and depth samples four times per pixel. The most common variations of SSAA are 2x and 4x. The final pixel color is the average of the four samples. It significantly improves image quality, almost entirely removing aliasing. However, it’s expensive and infeasible for real-time rendering.

Multi-sampling or MSAA is similar to SSAA, except it only samples depth. The key difference is in the latter half of the pipeline. While SSAA applies the pixel shader to each pixel 2x or 4x, MSAA only executes it once. It “multi-samples” around the triangle edges using the coverage and depth tests, smoothening the edges.

MSAA can’t be used with deferred lighting, which is quite popular in modern games. Deferred lighting delays the lighting calculations from the vertex to the fragment shader. This saves performance by applying it on a pixel rather than a polygon basis.


Post Process Anti-Aliasing: FXAA & SMAA
FXAA (Fast Approximate Anti-Aliasing) reduces jaggies by blending neighboring pixels, making the image smoother but at the same time blurrier. It uses luma or contrast-based edge detection: AA is applied wherever the luma difference is over a certain threshold. This isn’t very precise and can lead to excessive blurriness.


SMAA (Subpixel Morphological Anti-Aliasing) is more precise, removing aliasing without the associated blurriness. However, it suffers the same drawback as MSAA: It doesn’t work with transparent textures.


Morphological Anti-aliasing (MLAA) was one of the first shader-based anti-aliasing techniques. It searches for discontinuities (see the perpendicular green line at a):

- Classifies them according to (a set of) pre-defined patterns/shapes.
- They are then virtually re-vectorized (blue line), allowing the calculation of the coverage areas (visible triangles/objects) for the involved pixels.
- These areas are then used to blend with a neighbor, therefore smoothing them out.
- The shaded pixels (here a) get a color depending on the surrounding pixels.
- The edge detection is carried out using depth or luma information, pattern detection, and calculation of coverage areas (given by C).
- Pattern detection searches the two ends of an edge and analyzes the crossing edges.

MLAA doesn’t work well with complex geometry containing several thin lines. It was designed to anti-alias silhouettes of objects, and with sharp geometric features, it produces blurry results:

SMAA addresses the shortcomings of FXAA (too much blurring) and MLAA (limited coverage) and works well in most scenarios. It works by leveraging edge detection based on color-specific luma.

SMAA uses multiple (1-pixel long for sharp geometry and multiple pixels long for diagonal patterns) crossing lines to enhance edge detection and not only reduce blurring but also improve coverage. With thin lines and objects prone to blurring with FXAA/MLAA, a rounding factor is used that scales the coverage areas obtained by the pixel-long crossing edges.

SMAA is often paired with temporal anti-aliasing (SMAA T1x/T2x), which uses temporal data from neighboring frames to improve the stability and quality of anti-aliasing. It uses multiple samples per pixel to improve quality. The following modes are usually used.
- SMAA 1x: includes accurate distance searches, local contrast adaptation, sharp geometric features, and diagonal pattern detection.
- SMAA S2x: includes all SMAA 1x features plus spatial multi-sampling.
- SMAA T2x: includes all SMAA 1x features plus temporal super-sampling.
- SMAA 4x: includes all SMAA 1x features plus spatial and temporal multi/super-sampling
Temporal Anti-Aliasing is the latest and most popular. It removes temporal aliasing or shimmering, most evident in motion. Temporal aliasing is caused when the frame rate is too low compared to the transition speed of the objects in the scene, making object boundaries appear in motion. TAA compares neighboring frames and blends them to create a cleaner image in motion.

TAA is an approximation: It uses two images to extrapolate the final image, often blurring texture detail. The image is rendered across different frames at a particular resolution, and with each additional image, a jitter offset (camera shift of a few pixels) is applied. This produces multiple images from a single frame, which are then used for supersampling and/or upscaling.

Temporal upscaling uses a similar method to upscale lower-resolution images. The core difference is that, unlike TAA, alternating pixels are rendered in consecutive frames and fill the gaps using interpolation and samples from the neighboring pixels.


NVIDIA’s DLAA is a temporal anti-aliasing solution. It works like DLSS but uses native-resolution images instead of low-res inputs. These images and the motion vectors are fed to the neural network, producing better than native quality. The resultant frame is then fed to the network as the temporal feedback to accumulate and blend future frames.