Anyone else see the "Tesselated toad" on the Crysis 3 Trailer? I bet it would look even cooler with TXAA 😉 ( If it isnt already)
Nice overview, but I'm afraid that you're mistaken when you claim that FXAA is somehow not "true" anti-aliasing. I would suggest you study up on the mathematics of frequency-space representations and filtering before you try to argue against the engineers at NVIDIA.
Aliasing is a patterning artifact caused by high-frequency signal components interacting with a low-frequency sampling space. Anti-aliasing is *any* technique that filters out these high-frequency artifacts. There is no such thing as perfect anti-aliasing: all real low-pass filters are approximations. (Even if a perfect low-pass filter were possible, you would not want to use it for graphics because its non-locality would cause undesirable ringing artifacts.)
All real anti-aliasing filters involve trade-offs between
* aliasing (failure to remove frequencies above the sampling cutoff),
* ringing (caused by frequency truncation),
* excessive blurring (failure to retain frequencies just below the frequency cutoff), and
* complexity (because compute time is finite)
Supersampling is an approximation. So is the box kernel that is typically used to down-sample from the supersampled representation to the traditional one. Coverage-sampling and z-buffer-only supersampling (MSAA) techniques are, in many ways, a bigger compromise than those of FXAA: traditional MSAA looks terrible if not combined with good texture filtering, which is another anti-aliasing technique. The linear texture projection used in texture filtering are another approximation of true texture transforms, and not that great an approximation. (Anisotropic texture filtering is still a linear interpolation technique.)
FXAA is just a different (and far more sophisticated) approximation to a low-pass filter. Because it is a full-screen technique, it outperforms MSAA in many ways. It has slightly more blurring and doesn't do a good job with temporal aliasing, but it is vastly superior at removing aliasing due to transparency or small features—all at a radically lower cost. Most people should probably be using FXAA instead of MSAA in many games unless they already hit 60 FPS with all the effects they want enabled, especially if you are running in 1080p where the extra blurring is negligible. The only real drawback to FXAA is its poor ability to handle temporal aliasing (thus we have TXAA).
Let's try to put a stop to the false dichotomy that FXAA is "blurring" and MSAA is "true anti-aliasing." It's completely false. If anybody is looking for a good introduction, Jim Blinn's "Dirty Pixels" is a great introduction. (And if you don't know who Jim Blinn is, you probably shouldn't claim to know much about computer graphics.)
A full explanation and comparison of FXAA / SSAA / MSAA was beyond the scope of this article. Nevertheless, I read Intel's original FXAA/MLAA whitepaper, spoke extensively with Timothy Lottes at Nvidia, and consulted additional research materials. FXAA is a different approach to the aliasing problem and it utilizes different GPU resources. It's also an approximation by the literal meaning of the acronym.
Also? Let's avoid the e-peen. "If you don't know who Jim Blinn is, blah blah blah." That's like claiming you can't possibly understand Ron Paul if you haven't read John Locke. History and context give additional data points, they are not required for accurately processing the difference between various AA methods.
FXAA/MLAA does no sub-pixel sampling. Later versions of FXAA at NV have attempted to reduce the pixel 'snapping' distraction. The advantage of FXAA is that it's fast and can be run on cards that can't handle standard antialiasing.
Being able to extend AA capability to mobile devices or handheld gaming that wouldn't otherwise see any antialiasing capability at all is good. I daresay that games designed explicitly for FXAA can take steps to reduce the pixel snapping issues. There's evidence that FXAA works fabulously on a cell-shaded game like Borderlands, for example.
But if you're a user who hates jaggies -- and I am -- FXAA is a joke. Every AA method is a balance of compute time, end visual quality, and speed. When I can afford to, I opt for 4x sparse grid supersampling, or 8xMSAA with supersampled transparencies. The only way most modern games can handle that is if you use SLI -- which again, I've often done.
TXAA is only supported on NVIDIA® Kepler™ GPUs and will require a GTX 600–series graphics card, or higher, to enable the feature in the game's