Aggregate G-Buffer Anti-Aliasing in Unreal Engine 4

In recent years, variants of Temporal Anti-Aliasing (TAA) have become the techniques of choice for fast post-process anti-aliasing, approximating super-sampled AA amortized over multiple frames. While TAA generally greatly improves quality over previous post-process AA algorithms, the approach can also suffer from inherent artifacts, namely ghosting and flickering, in the presence of complex sub-pixel geometry and/or sub-pixel specular highlights. In this talk, we will share our experience from implementing Aggregate G-Buffer Anti-Aliasing (AGAA) in Unreal Engine 4. AGAA approximates deferred lighting from a 4x or 8x super-sampled G-Buffer while maintaining a low shading rate per pixel (at most two lighting evaluations per pixel). This decoupling is achieved by clustering the G-Buffer samples and pre-filtering their geometric and shading attributes into pixel-space aggregates. We will start with a recap of the general benefits of normal map and surface curvature pre-filtering and detail how we have implemented them in the deferred renderer of UE4. We will then present the AGAA technique and its prerequisites in a game engine. We will describe the changes that we made to the engine to implement AGAA (clustering, on-the-fly aggregation, and resolve), the interactions with translucency and HDR lighting, and finally how temporal reprojection can be used with AGAA to further improve image quality.

Authors: 
Louis Bavoil (NVIDIA)
Publication Date: 
Monday, July 25, 2016
Research Area: 
Uploaded Files: