Better Visuals Part 1: Post-processing AA

aacomp

Anti-aliasing. We all love it but it costs too much. In modern games running 4xMSAA at 1080p and higher resolutions is going to cost you 25%+ of your framerate. Now if you’ve got the GPU grunt to push 100+ FPS then 25% won’t hurt you but if you’re on the limit of playability (30-40FPS) then you have to compromise by dropping AA or reducing other settings to maintain fluidity. This is where post-process anti-aliasing (PPAA) comes in.

Removing aliased edges in a post-processing step is faster and uses less memory as you are working with a texture and not a scene. There are lots of flavours of PPAA all with instantly forgettable four letter acronyms. The most basic (i.e. blunt-force) methods perform the GPU equivalent of slapping vaseline on the lens. The result, as you can imagine, is a softened, blurry mess that also smudges the UI. ATI’s MLAA and Nvidia’s driver-level FXAA fall into this category along with a few other less well known versions. If developers decide to include the likes of FXAA in their games then they can prevent the UIs being filtered and you get good performance and image quality. Deus Ex Human Revolution and ARMA 2 are two examples of this approach. Then we have SMAA which looks to tick all the boxes in terms of smoothing aliasing without introducing the vaseline effect and all with a relatively small performance hit. Most PPAA methods work only in engines using DX9 and above (FXAA works for OpenGL) but with the older engines you should be able to use standard AA and not run into performance problems.

Another issue with traditional anti-aliasing methods is that they consume large amounts of VRAM especially if you try supersampling or edge-detect modes. FXAA/SMAA do not have high VRAM overhead.

ppaa

Part 2 will deal with how to get these nice PPAA methods working in your games.