(Above: GN's Andrew Coleman used Blender to visualize some of the AO discussion.)
Let's start with the name: Ambient Occlusion. Occlusion is the obstruction of one object by another, and ambient, in this case, is a reference to the ambient light source in game. For almost all games, ambient light comes from a single light source – for Battlefield, that's a faked sun, which is really just a light traced across a skybox. We recently spoke to Star Citizen's Sean Tracy about simulation of the sun for a source of light, and how it's a lot simpler than maybe people think. To create a realistic sun that traces realistic rays of light – and which is heliocentric, in the case of Star Citizen – is not normally what happens. Generally, the sun is an image of some kind with an intense source of light within it. In the case of day/night cycles, that light gets traced from one side of the sky to the other; it's not like the planet rotates.
Ambient light scatters more-or-less everywhere in-game with a mostly uniform pattern, so equal amounts of light meet at a single point. This light, however, is often contested by directional light sources (like a flash light, muzzle flare, lamps/torches), which make for uneven shadows and lighting on engaged surfaces. Occluded surfaces are the most noticeable as recipients of uneven shadowing and light, like the wrinkles in a face or the cracks in tessellated rock/tree surfaces.
Objects that are visible to the player but not visible to off-screen light sources will feel the most bereft of natural shading. The best, earliest example of this mix of directional and ambient light is the movie Toy Story, wherein Woody's mouth appears LED-backlit because of the mix of ambient and directional sources of light. This can be resolved with various AO techniques. For cinema, at least back then, it made sense to perform shadow tracing and render the effects in a farm. That doesn't work for real-time graphics, so gaming needed better solutions that cut corners for a mix of render speed and perceived quality.
AO methods help approximate shadowing of areas with mixed levels of light interaction. Gaming GPUs use SSAO, HDAO, HBAO, VXAO, or any number of other real-time ambient occlusion solutions. Screen-space, or SSAO, assumes the entire world is limited to the Z-buffer, so anything which exists outside of the Z-buffer, the camera's perspective, is not traced to calculate shading on screen. You may have also heard this term when we've previously talked about clock towers in a game like Assassin's Creed. Such a large object won't get drawn if the player can't see it (or all of it – see: z-culling), but that doesn't mean its light/shadow casting should change. That's often the case, but approximations (like voxelizing scene geometry) can help simulate the light/shadow effects without needlessly rendering all of the object's primitives.
Here's an example of that. This is an image of a tank with SSAO. Note that the underside of the tank isn't shaded, despite the fact that the underlying ground is occluded by the body of the tank. This happens because the tank's underside is not drawn in the z-buffer – it's not visible – and so we must instead turn to other techniques to resolve this issue.
VXAO is one of the newest methods of doing this and is used in Tomb Raider; this same image of the tank shows the change. VXAO isn't alone, though; other forms of AO, like AMD's HDAO and nVidia's HBAO+, have resolved issues with attenuation, out-of-frustum objects, noise and grain within the shadows, and discontinuity.
Something like VXAO would take geometric data and convert it into voxels, so that the pixel shader can use the z-buffer as input and perform per-point calculation to approximate shadowing. Learn more about VXAO here.
Let's get back to Battlefield 1. The question is: Does HBAO negatively impact AMD's performance in a way which is demonstrable, and a way which would make AMD look worse in benchmarks than nVidia?
The answer is “no, not really.” At least, not in this game. Battlefield 1 can run either screen-space or horizon-based ambient occlusion, which is from 2008 and well-documented at this point.
Our testing methodology is all the same as the Battlefield 1 GPU benchmark we published, so you can view or read that previous content if you have questions about drivers, test location, multiplayer and singleplayer scaling, or other curiosities.
The only difference is that we ran our new tests with Battlefield version 1.01, which includes performance optimizations overall within the game. For that reason, we rerean our Dx11 tests on two devices just for this specific HBAO vs. SSAO benchmark.
GN Test Bench 2015 | Name | Courtesy Of | Cost |
Video Card | This is what we're testing! | - | - |
CPU | Intel i7-5930K CPU 3.8GHz | iBUYPOWER |
$580 |
Memory | Corsair Dominator 32GB 3200MHz | Corsair | $210 |
Motherboard | EVGA X99 Classified | GamersNexus | $365 |
Power Supply | NZXT 1200W HALE90 V2 | NZXT | $300 |
SSD | HyperX Savage SSD | Kingston Tech. | $130 |
Case | Top Deck Tech Station | GamersNexus | $250 |
CPU Cooler | NZXT Kraken X41 CLC | NZXT | $110 |
Battlefield 1.01 Patch & Performance
First, here's a look at scaling we're seeing on Battlefield version 1.0 to version 1.01. We're getting about 1.5% better performance on the RX 480 and on the GTX 1080 – fairly uniform – though higher framerate gameplay with lower resolutions is posting a performance improvement of 3-3.9%. That's only really visible when we're already north of 100FPS, though. For tests where framerate is closer to 60-80FPS, we're seeing a 1.5% performance gain with BF version 1.01. Still, we retested with HBAO on and SSAO on with this newer version of the game, just to test this point.
HBAO vs. SSAO FPS in Battlefield 1
Here's a look at HBAO vs. SSAO on AMD's RX 480 with 1440p Ultra settings. There's no real impact. We're seeing a performance delta of 1.4% – or right around 1FPS. That's very nearly within normal test variance, though we always test multiple times and average the collection of results.
At 1080p with Ultra, the difference is about 3FPS – so a little more – from 90FPS AVG to 93FPS AVG. The lows are basically unimpacted.
The next thing to determine is how it plays out on nVidia, since we can't yet reach a conclusion with just this one settings change. All this does is tell us that a higher-quality ambient occlusion setting is more taxing, which everyone already knows.
Here's nVidia's GTX 1080 at 4K High. We're seeing a performance swing of, again, 1.4%. That's the same as what we saw on AMD's hardware between SSAO and HBAO with a higher resolution. Reducing the GTX 1080's resolution to 1440p, our performance delta is now about 2FPS AVG. Disabling HBAO creates equal scaling between nVidia and AMD when the cards are more taxed – which was most of yesterday's tests. There is no significant difference. When the cards are more lightly taxed on pixel throughput, we're seeing an approximate 1% advantage for nVidia that becomes noticeable when already running 80-120FPS. Not really significant, in the scheme of things. Not at all, actually; the point where 1FPS becomes a necessary gain is the point where it makes more sense to reduce other settings.
Now, of course, there's an infinite amount more that could be tested. Note that, for instance, testing at lower graphics settings may exacerbate the performance impact of HBAO in the face of other settings reductions. That doesn't matter for us, though, as we're just showing the performance swing relative to our previous tests. HBAO as a default graphics option did not significantly impact those previous tests and, worst case, you can assume a 1% increase for AMD devices at higher framerates. The rabbit hole never ends. We are putting an end to it here, though; it is time for GN to shift its efforts toward other tests, like CPU benchmarks, and toward product reviews.
Editorial, Test Lead: Steve “Lelldorianx” Burke
Video Producer: Andrew “ColossalCake” Coleman
Test Technician: Andie “Draguelian” Burke