ATi präsentiert „CrossFire Physics“

Update Wolfgang Andermahr
142 Kommentare

Physikberechnung in Spielen ist derzeit in aller Munde. Egal ob per Dual-Core-Prozessor, separater Physikkarte oder durch die Grafikkarte – moderne 3D-Spiele verlangen nach einer immer komplexeren Physik und es gibt mehr als nur eine Hardware, die dies ermöglichen kann.

Bei den Grafikkarten machte nVidia vor einiger Zeit den ersten Schritt und kündigte „Havok FX“ an, auch wenn dies längst nicht so nVidia-exklusiv ist, wie es zuerst den Anschein machte. Jeglicher Shader-Model-3.0-Beschleuniger kann mit der Havok-FX-Engine Physikberechnungen durchführen. Darüber hinaus sprach nVidia ebenfalls von „SLI Physics“, sprich der Nutzung einer kompletten Grafikkarte für die Physik in einem SLI-System, während die andere Karte das gewöhnliche Rendern übernimmt.

DPP Abstraction Interface
DPP Abstraction Interface

Dementsprechend war es natürlich nur eine Frage der Zeit, bis der Konkurrent ATi darauf reagiert: Heute ist es nun soweit und die Kanadier präsentieren anlässlich zur Computex „CrossFire Physics“. CrossFire Physics geht dabei ähnliche Wege wie SLI Physics, macht aber dennoch einiges anders. So ist es möglich, bei einem CrossFire-System eine Grafikkarte die kompletten Physikberechnungen durchführen zu lassen. Alternativ können die beiden Hauptgrafikkarten das Rendern übernehmen und eine zusätzliche dritte Grafikkarte berechnet die Physik. Dabei ist es gleichgültig, ob die dritte Karte identisch zu dem CrossFire-System ist, oder ob eine leistungsschwächere, dafür aber billigere GPU eingesetzt wird. Beispielsweise können zwei Radeon-X1900-XT-Karten die Grafik berechnen, während eine Radeon X1600 XT die Physik berechnet.

Nun kommt zwangsweise die Frage auf, wie CrossFire Physics arbeitet und warum Grafikkarten überhaupt effektiver die Physik als ein speziell entwickelter Physikbeschleuniger berechnen können soll. Der Grund dafür lautet Parallelität – denn nichts anderes als viele parallele Berechnungen sind nötig, um Physik ausführen zu können (DPP, Data Parallel Processing). Dasselbe ist für die Grafikausgabe der Fall, womit ein moderner 3D-Beschleuniger bereits von Haus aus gut für Physikberechnungen geeignet ist. ATi entwickelte für CrossFire Physics ein so genanntes „DPP Abstraction Interface“, das die GPU an das Betriebssystem als einen „Data Parallel Processor“ ausgibt. Die eigentliche Physiksimulation wird vom Pixel-Shader ausgeführt, weswegen die Pixelshaderleistung für Physikberechnungen eine entscheidende Rolle übernimmt.

Collision Detection
Collision Detection

Um beim Grafikrendering nicht unnötig die knappe Speicherbandbreite zu verschwenden, verfügen heutige 3D-Beschleuniger über mehrere Mechanismen wie beispielsweise Early-Z oder HierarchicalZ, um erkennen zu können, welche Objekte sichtbar sind und welche durch andere Objekte verdeckt werden und nicht berechnet werden müssen. Da eine Grafikkarte auch für Physikberechnungen nicht unendlich viel Leistung hat, gibt es erneut einen „Erkennungsalgorithmus“, der vor allem für Kollisionserkennungen wichtig ist. Die Grafikkarte analysiert die zu berechnende Physik und entscheidet, in welchen Bereichen es zu einer Kollision kommen könnte. Diese Bereiche werden dann weiter berechnet, während die Anderen verworfen werden.

Anschließend wird ein genauerer Algorithmus angewendet, der die genaue Position der Kollision erkennen soll, damit das Objekt physikalisch korrekt reagieren kann. Somit werden zu Anfang simple und schnell auszuführende Shaderberechnungen durchgeführt, während die kollidierenden Objekte mit einem aufwendigen Shader bearbeitet werden. Diese Ausführungen werden, wie bereits erwähnt, vom Pixel-Shader übernommen und mit Hilfe dynamischer Sprunganweisungen (Dynamic Branching) beschleunigt. Deswegen wird vor allem die Radeon X1800 sowie die Radeon X1900 voraussichtlich die Physik schnell verarbeiten können, weil diese 3D-Beschleuniger unter anderem wegen einer recht geringen Thread-Größe (R520: 4x4 Pixel, R580: 4x12 Pixel) eine hohe Effizienz beim Dynamic Branching bieten.

Dynamic Branching
Dynamic Branching

Unklar ist zur Zeit, ob CrossFire Physics wie Ageias PhysX-Chip die „Spielphysik“, also das Interagieren des Spielers mit der Umgebung, berechnen kann, oder ob ATi sich auf die Effektphysik (korrekte Berechnungen von Explosionen, Rauch, Wasser und ähnlichem) beschränkt. Ersteres wäre mit einer zukünftigen DirectX-10-Grafikkarte durchaus möglich, da mit der neuen API, die erstmals in dem kommenden Windows Vista eingesetzt wird, die GPU Daten an die CPU zurückschreiben kann – mit DirectX9 ist dies nicht möglich. Wann genau CrossFire Physics im Treiber freigeschaltet wird, ist noch unbekannt.

Update

Wie ATi uns auf Anfrage soeben mitteilte, ist es mit CrossFire Physics technisch durchaus möglich, die Spielphysik auf einer Grafikkarte zu berechnen. Jedoch würde eine GPU bei der Spielphysik die CPU nur um etwa 10 bis 15 Prozent entlasten, weswegen sich die Kanadier auf die Effektphysik fokussieren werden.