Friday, February 19, 2010

Battlefield: Bad Company 2 - Graphics Information

In a Battlefield: Bad Company 2 PC blogimabob post, DICE's Johan Andersson confirms the future addition of an  adjustable Field Of View, discusses the advantages of using a DirectX 11 GPU, and announces the addition of stereoscopic 3D support, post-launch:

Battlefield: Bad Company 2 is based on Frostbite 1.5, but with multiple enhancements and a lot of specific effort spent on building it up and for the PC as this is the first time Frostbite is used on PC.DirectX 9, 10 & 11:
Frostbite 1.5 on PC is designed for DirectX 10 as a base, this enables us to easily support all the advanced graphics features that we use on the consoles, and much more! DX10 is a very modern graphics API and gives us a lot of flexibility as a developer.
DX10 has one unfortunate draw back though; it is only supported on Windows Vista and Windows 7, not the now 9 year old Windows XP. And as we have a big PC fan base, where not everyone may have transitioned over to Vista or Windows 7 yet, we have also added a rendering path that uses the old DirectX 9.
The DX9 path is quite efficient but lacks some of the features that we have on DX10 like anti-aliasing and HBAO.
For everyone with the new generation of graphics card, like the AMD Radeon 5xxx series or the upcoming Nvidia Geforce 4xx, we've also added support for DirectX 11. The primary uses of DX11 in Bad Company 2 is to soften all the dynamic shadows as well as to improve performance in general with a few smaller DX11 optimizations that we are using.
The detection and usage of DX9/DX10/DX11 is done automatically, the game selects the highest possible version available with your graphics card and OS. If you want to force a given path you can do that in the Settings.ini file by setting 'DxVersion' to any of these options: 9, 10, 11 or auto (default).
The Settings.ini file can be found in My Documents\BFBC2 directory.
AMD Eyefinity:
Bad Company 2 supports AMD's Eyefinity rendering mode where you can have 3 (or 6!) monitors connected to a single graphics card. The game will then detect that mode and the very wide aspect ratio and render using a wide horizontal field of view and keep the menus & HUDs on the middle display. This can create a very immersive experience if you have the hardware required.
Elmnator1 posted a Youtube video showing Eyefinity in the Bad Company 2 PC Beta on his nice setup.
Nvidia 3D Vision:
We've been working together with engineers from Nvidia for adding proper support for 3D Vision stereo rendering in Bad Company 2 PC. This support is not enabled in the beta but it will be included in a patch shortly after the release of the retail game.
3D Vision works by rendering a picture for each eye every frame together with a slight offset. Then the 3D glasses together with the compatible displays and drivers correctly select which frame each eye sees to create actual depth perception in the game.
We are also looking forward to trying out the upcoming multi-monitor stereo rendering: 3D Vision Surround.
Expect to see & hear more about both 3D Vision and 3D Vision Surround in Bad Company 2 after the beta!
HBAO stands for Horizon-based Ambient Occlusion and is a rendering technique developed by Nvidia originally and that we have integrated into Frostbite for use on all DX10 and DX11 graphics cards.
It is a technique that creates soft & realistic contact shadows between objects and can really enhance the visuals but in a quite subtle way. It can be a demanding effect for the graphics card and as such is primarily meant for more higher-end cards. It only is a cost on the GPU, not the CPU.
Since the PC Beta we've done a bunch of optimizations on the effect together with both Nvidia and AMD, so if you had performance problems with it before: please give it a shot again in the retail game if you have a modern & fast GPU!
For the full technical details about how HBAO works, see this presentation by Nvidia from SIGGRAPH 2008: Image-Space Horizon-Based Ambient Occlusion.
Field Of View:
BC2 uses approximately the same vertical field-of-view on all platforms and modes. But as we support arbitrary monitor aspect ratios, you can get different horizontal FOV on different monitor setups - the wider monitor you have the wider horizontal FOV you get, i.e. you actually see more on the sides of the screen.
As widescreen monitors nowadays are even more common (and actually: the new standard) we felt it was very important to support them properly. Which we do in BC2 thanks to handling arbitrary aspect ratios. A positive side effect of this is that Eyefinity also works as it should, i.e. just like a single very wide monitor.
We've seen overwhelming positive feedback for the out-of-the-box support of Eyefinity, but a few select people have voiced some concern that the wide FOV when playing with Eyefinity would be considered cheating. But now when people have been playing the Beta we haven't heard any feedback that Eyefinity have actually been a big practical competitive advantage, it is meant to give you only extra peripheral vision.
The PC as a platform is inherently not a 100% fair playing field as people have always had varying performance, network connection, hardware setups, input devices and new technology - which is also one of the strengths of the platform and something we, and many PC players, would like us to embrace & utilize.
If the community later collectively agrees that Eyefinity is an actual big advantage in multi-player we can look into potentially having it as a server option, but don't think that will be needed.
Another much requested topic is to have a customizable FOV. This is not implemented in the PC Beta, but we are adding a customizable FOV for a future retail patch. The feedback from the Beta about servers, performance & stability have been of a higher priority and needed to be solved first.
Texture Detail & Multi-GPU Support:
The 'High' texture detail level is not included in the PC beta, but is in the retail game which increase texture resolution a bit.
Support for multiple GPUs (AMD Crossfire / Nvidia SLI) in the first PC Beta build was only partially working and could cause visual artifacts. This is improved on in the latest Beta client and since that version we have done additional performance scaling improvements that should be a good benefit.
We would like to thank both AMD and Nvidia for their technical support and assistance during the development of Bad Company 2. Both with the PC-only advanced features and with helping to make sure the game runs and performs well a wide range of graphics cards and configurations. Special thanks to Louis Bavoil (Nvidia) and Nicolas Thibieroz (AMD).
The Future:
If you are interested in more details about DirectX 11 as well as some sneak peaks and technical details about our upcoming Frostbite 2 engine, AMD recently did a big interview with me in their on the AMD Underground blog: "11 Days of DirectX 11: DICE".
Keep in mind that the interview is about the future, beyond Bad Company 2.