FXAA Already Superseded, SMAA Is Much Better

Coding Horror's Jeff Atwood has previously talked at length on this site about the new anti-aliasing kid on the block, Fast Approximate Anti-Aliasing, a post-process shader developed by NVIDIA that trumps traditional forms of AA, but at a fraction of the required GPU power. What if I were to tell you there's something faster and better still and you could be using it in all your DX9 games, right now?

It's important to watch the video at full resolution, otherwise resizing will make it impossible to make out the differences. Better yet, grab the 222MB HD video and eliminate compression artefacts from the equation.

SMAA, or Subpixel Morphological Anti-Aliasing, uses the same technique as FXAA -- that is, MLAA (Morphological Anti-Aliasing). Pioneered by Intel's Alexander Reshetov and originally developed for CPUs, it has since moved to the GPU and been improved on, using the massive parallel processing available on modern hardware. Which is kind of a downer for Intel, but great for everyone else.

MLAA works on the final image, detecting hard edges and smoothing them as required. It suffers from the same major issue as traditional AA, texture blurring, but it's nowhere near as bad. SMAA addresses this, and provides even better anti-aliasing and less blurring than FXAA. It's the joint work of Crytek and the Universidad de Zaragoza in Spain. Crytek's also famous for creating SSAO, or Screen Space Ambient Occlusion, which while a demanding effect, provides added realism that can't be denied.

So, how can you get SMAA into your current games? That's the beauty of MLAA shaders -- because they work on the final image, you can use it in just about any game that uses D3D9 for rendering. Like the FXAA injector, it's a simple matter of placing the right HLSL shader and modified d3d9.dll in the game's directory. An SMAA injector can be found at the following website.

Note it's not compatible with all games, but I can confirm it works with Skyrim without issue, and it looks like GTA IV likes it too. It can mess up games with the Steam overlay, but a variable in the config file that accompanies the injector enables a workaround for it.

SMAA: Enhanced Subpixel Morphological Antialiasing [Jorge Jimenez]


    Dont use it with online games as it may be detected as a hack. TRUE

    I don't agree with the SSAO making things more realistic. If I look at something on the screen, I want it to be in focus. That includes enemies who are approaching somewhere other than the centre of the screen. If I look at them, they should be in focus, at which point I will swing to point at said enemies.

    It's a problem in 3D movies as well; if you want to look at the sweeping scenery behind the main character, it's often far too blurry and you just end up getting a headache.

      Are we thinking about the same thing? SSAO adds more definition by darkening areas it believes are occluded, or blocked. The screenshot I linked to shows the effect best.

      What you're describing sounds like depth of field or motion blur, both of which I agree should only be used sparingly, if at all.

        He/she is definitely confusing SSAO for depth-of-field.

        Your linked picture does not show the effect very clearly. As the top picture has had blurring applied as well.

          The shadowing effect of SSAO is quite clear in the picture I linked to. Here it is again to clear up any confusion:

          I know it's a subtle effect, but it's *very* obvious in that image. If there's any blurring, it's certainly not significant enough to hide what SSAO is doing.

    YAY! Gone are the shimmering AA edges on moving objects.

      Unfortunately, the SMAA injector doesn't support temporal anti-aliasing, which addresses this exact issue. The latest version of SMAA includes it, but until it's activated in the injector, we only have SMAA x1 (equivalent to MSAA x4) for now.

    Wow already, these guys work at lightning speeds!

    Thanks for posting this. I'd love to see more of this sort of news

    I'll watch this just for the Daft Punk music

    Is it just me or did the CSAA look way better than anything?

      yeah but csaa uses way mire hardware resources

      It does for shadows but not for sub-pixel movement and diagonals.
      It also renders alot slower than SMAA does.

    That's mighty impressive
    Can anyone explain, in layman's terms, how this filter manages to access subpixel data in screen space?

    Morphological is also known to blur everything, including HUDs.
    In my experience it only looks better on cel-shade type games. With increasing resolutions the need for AA is lessening anyway

    The approach of FXAA and MLAA is fundamentally different. SMAA is really just the successor to MLAA. MLAA didn't really blur the screen much either - FXAA has always had a much more dramatic effect on the overall picture. The intent of FXAA from the beginning was to imitate the sort of blurring and other effects you see in film (which reduces aliasing), while MLAA/SMAA have basically consisted of filters that search for and blur things that it's algorithm believes are aliasing artifacts. Even today I still sort of prefer the overall effect of FXAA, although SMAA is obviously a huge improvement over MLAA.

    "Is it just me or did the CSAA look way better than anything?"

    It's not just you. These posts hugely exaggerate the benefits of these new methods over traditional AA. The problem is that the filters don't actually know where to blur. They guess where they think blurring should be. Traditional AA pretty much does nothing but increase the amount of information on the screen, while those post-process filters merely attempt to interpolate the true picture, and often miss. While they can produce screenshots that seem to easily rival traditional AA, in motion they're often atrocious, jiggling around like crazy where traditional AA would stay calm and clean. This is often even more noticable than simply not having AA - indeed, I'd pretty much always recommend no AA over MLAA. FXAA and SMAA are a lot better, though. But I seriously doubt we're ever going to reach the point where they totally replace it. These are and will continue to remain hacks for people who simply can't afford the real thing. The comments from people stating that this is going to replace traditional AA are simply sensationalistic. I've seen blog post after blog post stating that, for instance, xxAA rivals 4x MSAA, I've even seen some people say that it rivals 8x SSAA (this is simply delusional). I'd say it's more of an even race with 2x AA, if anything at all. It's really more like 1.5x AA. If I have the opportunity, there's no way on Earth I'm going to choose it over traditional AA.

    I was able to run Crysis 2 with SMAA.. but I need to say, it misses way too much lines, trees and vegetation for example, so it looks like without AA (the same shimmering). FXAA in Nv control panel brings the best resutls for me so far.

    FXAA does blur textures and text but not soo much as I thought it would be, you need to play game that has very sharp textures and it would look like lower anizo settings on ground textures (in the distance).
    Image quality is still good without performance hit so I use it in crysis 2/gta4/dead space.
    But I need to say FXAA in ALan Wake/Battlefield 3 are much blurier than just FXAA in Nv control panel, dont know why, it looks like these two FXAA arnt the same .

Join the discussion!

Trending Stories Right Now