Was passiert mit PhysX, wenn DX11/OpenCL da sind?
Kaum ein aktuelles PC-Spiel kann heutzutage mehr ohne eine funktionierende Physik-Engine auskommen. Die Hersteller haben verschiedene Möglichkeiten, wie man die Physik in dem eigenen Titel realisiert. So kann man eine eigene Engine entwickeln (aufwendig, aber flexibel), oder man vertraut auf bereits vorhandene Physik-Bibliotheken.
Dies wären aktuell entweder das von Intel aufgekaufte Havok oder die Konkurrenz-Engine PhysX, die Nvidia von Ageia übernommen hat. Beide Engines sind weit auf dem Markt verbreitet und ob sich jemals eine komplett durchsetzen oder beide friedlich nebeneinander weiter existieren werden, ist nicht abzusehen. PhysX bietet zur Zeit allerdings einen großen Vorteil: Physikeffekte können zumindest teilweise auf der GPU berechnet werden, weswegen sich einige Effekte deutlich schneller berechnen lassen und man somit mehr von diesen Verwendung finden. Mirror's Edge ist der erste Titel, der GPU-PhysX ausführlich verwendet.
Bei Havok sind die Kunden, also die Entwickler, auf die CPU angewiesen. Bei PhysX dagegen auf eine GeForce-Karte von Nvidia (ab der GeForce-8000-Serie), da PhysX nur mittels CUDA auf der GPU berechnet werden kann, was ATi-Karten von vornherein ausschließt. Nun wollen wir an erster Stelle erstmal ein Gerücht ausräumen, das seit einiger Zeit gerne im Internet verbreitet wird. So wird oft behauptet, dass Nvidia den CPU-Part bei PhysX nicht optimiert hat, um so die GPU besser dastehen zu lassen. Das kann man getrost als eine Lüge bezeichnen, da man nicht vergessen darf, wo PhysX herkommt.
Nämlich von Ageia, die zwar ebenfalls ihre separaten PhysX-Karten verkaufen wollten, aber primär ihr Produkt auf der CPU anpreisen mussten. Und durch den harten Zweikampf mit Havok kann man davon ausgehen, dass beide Physik-Engines sehr gut auf (Multi-Core-) CPUs optimiert sind, vor allem, da dies immer noch die Haupteinsatzgebiete sind. Ansonsten würde wohl kaum ein Entwickler mehr zu PhysX greifen, wenn man mit Havok das bessere Produkt erhalten würde.
Darüber hinaus wird gerne behauptet, dass PhysX verschwinden wird, wenn OpenCL beziehungsweise der Compute Shader in DirectX 11 da sind. Dies ist ebenso wenig korrekt. Doch wie kommen viele Leser auf die Behauptung? Wie bereits erwähnt, kann man CUDA-Programme nur auf einer CUDA-fähigen GPU, also einer Nvidia-Karte, ausführen. OpenCL und der Compute Shader sind nun wie Direct3D und OpenGL eine API, die unabhängig vom Hersteller genutzt werden kann. Es ist also gleichgültig, ob der Rechenkern von ATi, Intel, Nvidia, S3 oder anderen kommt.
Beide APIs werden in Zukunft für das GPU-Computing genutzt, also das Ausführen von parallelen Berechnungen auf der GPU abseits der 3D-Grafik. Unter anderem fällt GPU-PhysX unter dieses Stichwort, weswegen viele nun glauben, dass PhysX aufgrund der beiden APIs verschwinden wird. Dies ist aber mitnichten richtig! Zwar kann man mit OpenCL sämtliche OpenCL-kompatiblen Rechenkerne ansprechen, man benötigt jedoch immer noch eine Physik-Bibliothek, die weder OpenCL, noch DirectX 11 mitbringen. Es wird von Microsoft auch kein standardisiertes Direct Physics geben (zumindest vorerst), was von einigen gerne behauptet wird.
Damit stehen bisher nur Havok oder PhysX zur Verfügung, wobei es bis jetzt nur von PhysX eine GPU-Version gibt. Diese würde in der aktuellen Version aber nicht funktionieren, da Nvidia bis jetzt nur Solver für x86 (die CPU), die PPU (die separate Ageia-Karte), PowerPC (primär die Xbox 360), Cell (PlayStation 3) sowie eben CUDA (GeForce) mitliefert. Auf diesen Plattformen ist PhysX benutzbar, während es noch keine Solver für OpenCL oder den Compute Shader gibt.
Ob es diese später geben wird, ist noch unbekannt, allerdings gehen wir stark davon aus, da man ansonsten wohl einen Nachteil gegenüber Havok hätte. Aber auch von Havok gibt es noch keine Bestätigung, einen OpenCL-/Compute-Shader-Solver in die Physik-Engine zu integrieren. Man ist also in beiden Fällen auf die Hersteller, Intel und Nvidia, angewiesen. Ansonsten gibt es selbst mit den beiden zukünftigen APIs keinerlei GPU-Physik.