Technikdossier zu DirectX 11 in Battlefield 3: Mit brandneuen Frostbite-2-Screenshots
Hinter Battlefield 3 steht die Frostbite-Engine 2. Deren Renderer fährt am PC unter DirectX 11 interessante Optionen wie Deferred Shading, Compute Shader, Displacement Mapping und spezielle Kantenglättungsmodi auf. Hinzu kommt eine per Radiosity in Echtzeit berechnete globale Beleuchtung und vieles mehr. PC Games Hardware fasst die Technik von Battlefield 3 zusammen.
Die PC-Version von Battlefield 3 basiert rein auf DirectX 11, wobei Besitzer einer DirectX-10/10.1-Karte dank der Abwärtskompatibilität dennoch in den Genuss der meisten Grafikoptionen kommen. DirectX 9 und damit auch Windows XP werden aber nicht unterstützt, was nicht tragisch ist: Das Betriebssystem ist rund zehn Jahre und in mehrkernoptimierten Spielen wie Anno 1404 oder Bad Company 2 mit aktuellen Multicore-CPUs wie einem Phenom II X4 Windows 7 hinsichtlich der Fps oft massiv unterlegen; erste DirectX-10-Karten erschienen anno 2006.
Frostbite-Engine 2: Vorwort
Bereits auf der Siggraph 2010 erläuterte DICEs Johan Andersson einige Punkte zur Frostbite-Engine 2, der Technologie, welche die Schlachtfelder in Battlefield 3 zum Leben erweckt. Auf der vom 28. Februar bis 04. März laufenden Game Developer Conference (GDC) ließ es sich Andersson ebenfalls nicht nehmen, über die Frostbite-Engine 2 zu referieren und zwar über DirectX 11. Neben weiteren Präsentationen ist besonders "Lighting You up in Battlefield 3" des Senior Artists Kenny Magnusson hervorzuheben, welcher zuvor als Technical Lighting Artist im Frostbite-Team arbeitete.
Frostbite-Engine 2: Deferred Shading und die Kantenglättung
Bereits von der Siggraph 2010 ist das Tile-based Deferred Shading (TBDS) unter Zuhilfenahme von Compute-Shadern unter DirectX 11 bekannt: TBDS erlaubt durch die Stückelung von Beleuchtungsdaten die flotte Abarbeitung von hunderten von Point Lights, jedoch ohne Schatten. Sobald die Lichtquellen Schatten werfen, schrumpft die Anzahl zusammen oder die Fps fallen ins Bodenlose. Der Vorteil von Deferred statt Forward Shading ist in erster Linie die Zahl der möglichen Lichtquellen, welche für eine adäquate dynamische Beleuchtung unumgänglich sind - daher kamen für DICE auch keine statischen Lightmaps infrage. Nachteile sind u.a. die starke Beanspruchung der Rasterendstufen (ROPs), vor allem dann, wenn noch Multisampling-Kantenglättung aktiv.
Problematisch bei Verwendung von Deferred statt Forward Shading ist die Kantenglättung, genauer gesagt traditionelles MSAA - allerdings nur unter DirectX 9, da hier der Zugriff auf die Tiefenwerte im MSAA-Buffer nicht möglich ist; das geht erst mit DirectX 10.1. Die Frostbite-Engine 2 bietet dank DirectX 11 ergo Multisampling-Kantenglättung, welche allerdings viel Speicher kostet (158 MiByte für 1080p mit G- und Z-Buffer), nur Polygonkanten glättet und damit die heutzutage üblichen Shader- und Alphatest-Orgien weiter flimmern lässt. Daher hat DICE weitere Kantenglättungsmodi in die Frostbite-Engine 2 eingebaut: Das sogenannte "Fast Approximate Antialiasing", FXAA, basiert auf einem von Nvidia entwickelten MLAA (Morphological Antialiasing) - ähnlich dem von AMD. MLAA ist ein reiner Post-Process-Effekt und erkennt Kanten anhand von Kontrasten, unterdrückt Kantenflimmern in Bewegung nur schwach, ist gegenüber Shaderflimmern machtlos und macht das Bild auch noch unscharf. Die Ursache dafür ist, dass MLAA keine Informationen auf Subpixel-Ebene abgreift - dafür ist es mit 1,3 Millisekunden pro Frame (1080p auf GTX 580) sehr flott und kann beispielsweise auch von der SPU einer Playstation 3 berechnet werden.
"Subpixel Reconstruction Antialiasing", kurz SRAA, an welchem derzeit auch Nvidia arbeitet und über welches wir bereits berichteten, geht einen Schritt weiter: Es nutzt die Daten des 4x-MSAA-Buffers (Tiefe und oder Normale), greift auf die Daten "zwischen" den Pixeln zurück und kann daher effektiv gegen Geometrieflimmern vorgehen. Da SRAA jedoch erst aufwendig angepasst werden muss und einen zweiten Pass erfordert, ist diese Methode zwar klar besser, jedoch auch aufwendiger als MLAA. Zu guter Letzt bietet die Engine auch Transparency-AA auf Supersampling-Basis, welches dank DirectX 10.1 ohne Probleme Alphatests glättet und damit genau das, wo MSAA und Konsorten mehr oder minder versagen.
Frostbite-Engine 2: Globale Beleuchtung via Radiosity
Die erste Inkarnation der Frostbite-Engine, bekannt aus Bad Company 1 (Konsolen-exklusiv), ist rein Forward-basiert, kann laut DICE nicht streamen und bietet weder eine globale Beleuchtung noch Umgebungsverdeckung (Screen-Space Ambient Occlusion, SSAO). Mirror's Edge auf Basis der Unreal Engine 3 ist da schon weiter und bietet Streaming sowie dank Illuminated Labs' Beast-Renderer eine vorberechnete, statische globale Beleuchtung in Form von Radiosity Normal Maps. Für die Frostbite-Engine 2 wollte man beides und mehr: Auf der Liste steht unter anderem eine bessere Beleuchtung, auch für Partikel, samt Lichtdurchlässigkeit von Objekten sowie Überstrahleffekte und Tonemapping, wie es in Filmen zum Einsatz kommt. Hierzu nutzt DICE Geomerics' Middleware Enlighten, eine Software, welche Radiosity in Echtzeit erlaubt. Diese sorgt dafür, dass unabhängig vom Blickwinkeln Licht samt der passenden Farbgebung von jeglichen Oberflächen gleichmäßig abgestrahlt und zum Teil auf andere Objekte geworfen wird.
Frostbite-Engine 2: Displacement Mapping, Instancing und Streaming für die Schlachtfelder
Da Battlefield 3 auf große Maps mit vielen Höheninformationen und hoher Sichtweite sowie zerstörbare Umgebungen setzt, musste sich DICE etwas einfallen lassen, wie man diese Schlachtfelder performant auf den Bildschirm bringt. Mit DirectX 11 könne man bessere Silhouetten und mehr Tiefe ins Spiel bringen, auch kleine Details wie Krater seien möglich. Im direkten Vergleich ist (Hardware) Displacement Mapping dem üblichen (rein texturbasierten) Normal Mapping klar überlegen: Durch Tessellation besteht die Umgebung aus mehr Polygonen, die einander auch verdecken, und auch für das "Destruction 2.0"-System ließe es sich nutzen. HAWX 2 zeigt, wie sehr Maps mit vielen Höheninformationen und hoher Sichtweite von Tessellation profitieren können.
Wichtig im Zusammenhang mit der Umgebung ist Instancing, welches den Flaschenhals der Draw Calls reduziert. Aufgrund sehr vieler Objekte, Materialien und Schatten ist es sehr wichtig, Aufrufe zu bündeln. Mit DirectX 11 lässt sich dies effizienter lösen, da sich diverse Daten in einen Buffer packen sowie aufrufen lassen und so die GPU entlasten. Per Parallel Dispatch ist es möglich, die Arbeit in der Theorie auf mehrere CPU-Kerne zu verteilen, allerdings stehen laut DICE keine passenden (schnellen) Treiber von AMD und Nvidia bereit. Zwar bieten aktuelle PCs viel Videospeicher, alle Daten von Battlefield 3 passen aber nicht auf einen Schlag in eine übliche 1-GiByte-Grafikkarte - DICE will eine solche auch nicht zwingend erforderlich machen. Daher werden die weit mehr als 1 GiByte umfassenden Daten wie beispielsweise Texturen natürlich gestreamt - dies kommt auch den Ladezeiten zugute. Mit DirectX 11 und in Zusammenarbeit mit AMD, Microsoft und Nvidia ist es DICE laut eigener Aussage gelungen, ohne Unterbrechungen asynchron Daten mit der DAM-Einheit aktueller Grafikkarten heranzuschaffen.
Frostbite-Engine 2: Multi-GPU nach DICE-Art
Man ist sich in Schweden bewusst, dass Enthusiasten mit mehr als einer Grafikkarte spielen und AMD wie Nvidia solche Produkte in Form von Dual-GPU-Karten immer wieder an den Mann bringen respektive zur Eroberung der Benchmark-Krone nutzen. Da die beiden großen IHVs auf Alternate Frame Rendering (AFR) vertrauen, hat DICE eine entsprechende Ausführungsdatei namens "AFR-FriendlyD3D.exe" erstellt und diese auf AFR angestimmt - dies ist eine sogenannte Wildcard und signalisiert Radeon-Grafikkarten voll auf AFR zu setzen (ohne darauf achten zu müssen, dass eventuell Daten von Frame zu Frame übertragen werden müssen). Daneben existiert eine "ForceSingleGPU.exe" für einzelne Grafikprozessoren.
Falls Sie sich nicht durch unsere Galerie klicken möchten, die Dokumente, auf denen dieser Artikel basiert, finden Sie unter anderem als PDF-Datei auch bei DICE (siehe Quelle).
Reklame: Battlefield 3 jetzt bei Amazon vorbestellen und "Back to Karkand"-DLC sichern.
Quelle: DICE


Nö, mehrfach geprüft.
Es bleibt dabei: Multicore und Spiele ist mit Win7 klar besser als XP.
Das stimmt wohl auf jeden Fall, XP weis mit 4 und mehr Threads in der Praxis gar nichts anzufangen und der Geschwindigkeitsvorteil von DX 11 nur mit ComputeShader ist auch recht groß.
Es bleibt dabei: Multicore und Spiele ist mit Win7 klar besser als XP.
Ich biete dir das hier: Vergleiche den 955 und 1090T, beide 3,2 GHz und ansonsten bis auf die Anzahl der Kerne identisch. Der AVG-Fps-Plus beträgt +33%. How-2-Bench gibt's hier. Im Falle des 980X vs. 975 XE messen wir btw auch nur eine Differenz zugunsten des Gulftown von mageren +5%. Die Kernskalierung ist eine Eigenart der Phenom II - und auf den bezog ich mich. Also bringe mir bitte keinen GS-Test eines Gulftown; denn der ist - wie du sagst - eine andere Architektur.
[Ins Forum, um diesen Inhalt zu sehen]
Unrealisisch, denn hier fällt der Workload von OS und Co. Wenn, dann muss man die Kerne per BIOS oder "numproc" deaktivieren.
Ist ja auch egal wie gut das Spiel mit mehreren Kernen skalliert. Fakt ist, dass XP das genauso kann und das es ein Fehler eurerseits sein muss, denn...
- ich konnte keine Usermeinungen im Netz finden wo Anno1404 unter XP nur einen Thread nutzt.
- Windows 7 kam erst ein halbes Jahr nach dem Release von Anno auf den Markt. Vista hatte sich bis dahin und bis heute nicht durchsetzen können. Ein Programm auf den Markt zu werfen, welches auf dem vorherschenden Betriebssystem massive Performanceeinbusen hätte, weil nur ein Thread genutzt werden würde wäre undenkbar. Von der Entwicklungsphase des Spiels mal ganz abgesehen...
- Auch was die Kompatibilität von Windows 7 und Anno 1404 angeht sieht man das bei Ubisoft auch etwa anders.
[Ins Forum, um diesen Inhalt zu sehen]
- Ich habe das ganze mal gegengetestet. OS ist Win XP 64Bit CPU ein Q6600@3,7Ghz. Ich habe leider nur die Demo in der Version 1.0 zur Hand, und habe das ganze auf der Insel des freien Händlers mittels Fraps ermittelt.
1 Thread/Kern = 60 fps
2 Threads/Kerne = 82 fps
3 Threads/Kerne = 90 fps
4 Threads/Kerne = 91 fps
Da ich eine etwas ältere Grafikkarte habe ist das kein professioneller Test, das soll er auch nicht sein. Er soll auch nur zeigen, dass XP sehr wohl mit mehreren Threads umgehen kann. Es gibt genug Renderingprogramme, Videosoftware, etc die auf XP mit mehreren Kernen skallieren, ein Spiel ist da auch nichts anderes. Der Fehler bei Anno saß wohl eher vor dem Bildschirm?
Habt ihr auch Balck Ops getestet?
Hier berichten viele User von einer deutlich geringeren Leistung unter Windows 7. Einfach die Bilder anklicken:
Windows 7 vs Windows XP performance in Black Ops. What the heck? - Page 26 - Steam Users' Forums