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.
THAT. F.... FENCE. :D
Every, single, time. With every, single Source game. HL2, CSS, MODS, CSGO. It's everywhere.
Ha. Seriously! The source engine is what I like to call a polished turd. Somehow even though its ugly as f%$#, they still make it look acceptable...except for the fence XD
It’s unnecessary for games to emulate camera flaws, and depth of field is a limitation of cameras. The human eye is able to focus everywhere, and free to do that. Depth of field does not allow to focus where the user wants to focus, so is just an annoyance, and worse, it costs FPS.
This chart is great. Thanks for showing it.
It shows something out of many video cards reviews: the 7970 frequently falls under 50, 40, and even 20 FPS. That ruins the user experience. Meanwhile is hard to tell the difference between 70 and 80 FPS, is easy to spot those moments on which the card falls under 20 FPS. It’s a show stopper, and utter annoyance to spend a lot of money on the most expensive cards and then see thos 20 FPS moments.
That’s why I prefer TechPowerup.com reviews. They show frame by frame benchmarks, and not just a meaningless FPS. TechPowerup.com is a floor over TomsHardware because of this.
Yet that way to show GPU performance is hard to understand for humans, so that data needs to be sorted, to make it easy understandable, like this figure shows:
Both charts show the same data, but the lower has the data sorted.
Here we see that card B has higher lags, and FPS, and Card A is more consistent even when it haves lower FPS.
It shows on how many frames Card B is worse that Card A, and is more intuitive and readable that the bar charts, who lose a lot of information.
Unfortunately, no web site offers this kind of analysis for GPUs, so there is a way to get an advantage over competition.
So .. in short: Consoles are cheap and easy to use. You pop in the CD, you play your game. You won't be a professional FPS gamer (hence the stick), or it won't amaze you, hence the graphics. But it's easy and simple.
'Hate' is a bit strong word but you do have a point there. It's much more natural to focus my eyes on a certain game objects rather than my hand (i.e. turn the camera with my mouse). And you're right that it's unnecessary because I get the depth of field effect for free with my eyes allready when they're focused on a point on the screen.