Frostbite
Stable SSAO in Battlefield 3 with Selective Temporal Filtering
GDC 2012
With the highest-quality video options, Battlefield 3 renders its Screen-Space Ambient Occlusion SSAO using the Horizon-Based Ambient Occlusion HBAO algorithm. For performance reasons, the HBAO is rendered in half resolution using half-resolution input depths. The HBAO is then blurred in full resolution using a depth-aware blur. The main issue with such low-resolution SSAO rendering is that it produces objectionable flickering for thin objects such as alpha-tested foliage when the camera and/or the geometry are moving. After a brief recap of the original HBAO pipeline, this talk describes a novel temporal filtering algorithm that fixed the HBAO flickering problem in Battlefield 3 with a 1-2 performance hit in 1920×1200 on PC DX10 or DX11. The talk includes algorithm and implementation details on the temporal filtering part, as well as generic optimizations for SSAO blur pixel shaders. This is a joint work between Louis Bavoil NVIDIA and Johan Andersson DICE.