What We Tested: Battlefield 3
Developer DICE used DirectCompute to accelerate the processing of non-shadowed lights within Battlefield 3. This process involves dividing the screen into tiles, then analyzing which lights are illuminating which tiles. This, in turn, helps establish per-pixel lighting by narrowing down the lights applicable to each tile.
“DirectCompute allows this effect to happen at very fast performance because it's heavily parallelizable,” says DICE rendering architect Johan Andersson. “For each tile of 8x8 pixels, a full kernel of work elements are executing the required tasks simultaneously. Several tiles worth of work can be running on the multiple compute units present in modern GPUs at the same time. Being able to rapidly process non-shadowed lights is a key element of Deferred Rendering engines as more and more games are now employing this rendering technique.”
You can see more of this technique used in AMD’s “Leo” demo, which accompanied the Radeon HD 7970 launch. According to AMD, the Leo demo uses similar culling and calculations to those done by DICE, only the work is processed even more quickly by a forward-rendering engine. The approach allows for light processing to be done with essentially all major rendering techniques now in use.
Like most games, Battlefield 3 still relies heavily on compute shaders for most of its effects and has to devise work-arounds to cope with shader limitations. For instance, the bilateral upsampling computeshader is used to accelerate the rendering of selected screen-space techniques.This process works by first rendering the desired effect (such as SSAO) athalf-resolution and then interpolating this low-resolution render back to thetarget resolution with a high-quality edge-preserving filter implemented withDirectCompute. Future iterations may be able to do this operation at fullresolution without impacting performance, or DirectCompute may step in to fillthe need.
Codemasters’ Thomas notes that DiRT 3 uses a similar interpolation tactic with high-definition ambient occlusion (HDAO). The reason HDAO is computed at half-resolution is because sampling from a half-resolution depth buffer is equivalent to sampling from a double-diameter sample kernel at full-screen resolution. The effect could be run at full-screen resolution, but the quality would only be slightly improved, while the sample kernel size would make the effect prohibitively expensive. Half-screen resolution seems to be the sweet spot for now.
DirectCompute-based assistance on effects like ambient occlusion is not a free ride, though. Depending on the scene conditions, it can either help or hurt performance.
“It’s important to test in an area where there actually are a lot of light sources, such as in the subway of the Metro MP map,” says AMD's Neal Robison. "The compute path is not there to accelerate the average or best-case performance situations, but the worst areas where we have the most light sources. Though as it is active all the time, it actually reduces performance due to extra overhead in scenes where you only have a couple of light sources.”
You can see exactly what we use for benchmarking Battlefield 3 in this recorded demo, the 90-second clip we use on all Tom’s Hardware reviews. Its combination of dim indoor conditions followed by bright (if overcast) outdoor conditions should provide for a fairly balanced average assessment.
We discovered early on that AMD's current APUs wouldn’t deliver playable frame rates, except at the most entry-level settings. Thus, for all Battlefield 3 tests, in order to have a level playing field across graphics configurations, we set texture, shadow, effects, mesh, terrain quality, and terrain decoration to Low; AA deferred, AA post, and motion blur to Off; and anisotropic filter to 1x.