Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

See an analysis of FXAA here, and the page for SMAA here

Now these methods have a drawback which is that they are not capable of improving quality in a physically accurate way, like multisampling does (what I mean by this is that it brings out the sub-pixel details from geometry by super-rasterizing), but they are a terrific method for curtailing visual artifacts which are a result of regular rasterization.

Case in point: I run an Nvidia GTX 260, it came moderately overclocked from the factory, it is a Gigabyte Super Overclock model. I also run a 1920x1200 screen.

It's sometimes difficult to maintain good framerates when I play Battlefield 3, but I've noticed some general improvements in terms of speed recently which has made the game play quite a bit better today than it did back when it was released.

The point is, the performance hit caused by 4xMSAA or even 2xMSAA is very noticeable in this game at my full resolution, because it needs all the power it can get. However, FXAA post processing antialiasing comes at almost no cost! A month or two ago, I found myself running the game in windowed mode most of the time because it achieved better framerates that way. But now I've discovered that disabling MSAA and using FXAA almost completely eliminates edge-artifacts without the performance hit of MSAA.

I find that shader-post-process AA is extremely good at producing smooth edges when lines are near-horizontal or near-vertical, and also with thin objects, like the cables on the telephone pole in the link. On still images, a similar smoothness quality is unobtainable until you crank MSAA to 16x.

However shader-post-process AA does not eliminate temporal aliasing artifacts: Even though edges are smoothed terrifically, they "jump" as they move across pixel boundaries.

The reason why this happens is because the shader-AA has no knowledge of actual geometric coverage data, which is what MSAA and friends are essentially based on. As an edge traverses the pixel boundary, our smooth edge will "jump" the length of a pixel, rather than smoothly blending in and out like we would see with 16xMSAA/CSAA. CSAA is particularly good for this because it rasterizes at a higher resolution than MSAA.

So with all this in mind I don't think that shader-based antialiasing methods are a replacement for traditional methods. However I think they are a really cool way to improve image quality in almost every situation. They have the benefit of not requiring a different render buffer storage format.

I think that, going forward, the best way to apply antialiasing in games would be a combination of coverage sampling AA and post-process AA.

Jeff Atwood claims that FXAA made MSAA/CSAA obsolete overnight. What do you think? What are some other ways to compare and contrast traditional antialiasing with shader-based antialiasing?

share|improve this question
1  
Just some heads up: "Physically accurate?" - nothing about games is truthfully physically accurate. Rasterization is just a pretty good approximation of ray tracing. Same goes for AA - if it looks good enough to the eye, who cares? "Pixel jumping?" Not sure if there is anything 'better' at the moment - to avoid this you would no doubt need temporal information available. I haven't yet seen SMAA in the wild - but you might try experimenting with the injector to see how it fares with this pixel jump issue. –  Jonathan Dickinson Feb 14 '12 at 18:06
1  
I think that this would be a really interesting discussion. But.. we're not really about discussions here (the way that answers can be edited and re-ordered makes the site really awkward for discussions). We're a Q&A site, and we're really trying to get at objective answers to tightly focused questions. (see the third paragraph here: gamedev.stackexchange.com/faq#dontask) I think this conversation would work better in our chat, or in a discussion forum. –  Trevor Powell Feb 14 '12 at 20:19
4  
Pedantic note: Neither FXAA nor any form of Morphological AA are antialiasing techniques. They are simply ways of filtering a pre-existing image. Actual antialiasing techniques actually remove aliasing. They do so by looking at the signal before rasterization, and therefore incorporate more of the signal into the result. Once you have an image, you've already lost the information. These techniques are approximations that attempt to reconstruct the information after the fact. They do not remove aliasing; they simply hide jagged edges. –  Nicol Bolas Feb 14 '12 at 21:35
    
Thanks for the clarification, Nicol! –  Steven Lu Feb 15 '12 at 3:47

1 Answer 1

up vote 2 down vote accepted

Generally speaking, yes, postprocess antialiasing like FXAA is making MSAA much less popular.

As you mentioned, the performance hit for MSAA is very high, mainly due to the increased memory bandwidth required for reading/writing render targets. It also, of course, consumes a lot more memory for those render targets - not as big a deal for PC gamers who usually have lots of memory, but a real big deal for consoles. To do MSAA on a console requires you to make big sacrifices in some other aspect of the graphics. MSAA is also tricky to get working right with deferred-shading renderers, which are becoming more common. Meanwhile, FXAA is fast, usually doesn't require any extra memory, and is very easy to bolt on to an existing rendering pipeline. It's no wonder game developers are flocking to it!

Moreover, as screen resolutions get higher, the visual quality benefits of MSAA over FXAA will diminish in many cases. There's an interesting article here about different kinds of visual acuity and when MSAA really makes a difference.

Eventually, of course, we expect to get to screen resolutions so high that no AA is necessary at all. That's quite a few years away. But MSAA will die a long time before postprocessing AA does.

share|improve this answer
    
I think that no matter how high display resolutions get, AA and jaggie-reduction techniques will still improve image quality in general. As resolutions get higher, we will also have access to more compute power. There's practically no reason not to switch on FXAA. –  Steven Lu Apr 30 '12 at 15:25
    
Now this point would still have been valid over a year ago when I posted this question, but I have been messing about with OpenGL ES 2.0 (of the iOS flavor) as of late, and it's interesting to see the how MSAA is alive and kicking on mobile platforms which are lacking in shader horsepower. The Deferred Rendering architectures are able to make MSAA quite practical for enhancing image quality to amazing levels at a relatively small cost. –  Steven Lu Sep 27 '13 at 1:18

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.