PhysX - PhysX

PhysX
NVIDIA PhysX-Logo.png
Originalautor(en) NovodeX AG ( ETH Zürich )
Entwickler Nvidia Corporation
(2008-heute)
Ageia
(2004-2008)
NovodeX AG
(2001-2004)
Stabile Version
21.09.0713 / 12. Oktober 2021 ( 2021-10-12 )
Repository https://github.com/NVIDIAGameWorks/PhysX
Betriebssystem Microsoft Windows , macOS , Linux , PlayStation 2 , PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS , Android
Typ Physiksimulation
Lizenz BSD-3
Webseite Nvidia PhysX-Entwicklerseite

PhysX ist ein Open-Source- Realtime- Physik-Engine- Middleware- SDK, das von Nvidia als Teil der Nvidia GameWorks- Softwaresuite entwickelt wurde .

Ursprünglich sollten Videospiele, die PhysX unterstützen, durch PhysX PPU ( Erweiterungskarten von Ageia ) beschleunigt werden . Nach der Übernahme von Ageia durch Nvidia wurden jedoch dedizierte PhysX-Karten eingestellt, um die API auf CUDA- fähigen GeForce- GPUs auszuführen . In beiden Fällen ermöglichte die Hardwarebeschleunigung das Auslagern physikalischer Berechnungen von der CPU , sodass sie stattdessen andere Aufgaben ausführen konnte.

PhysX und andere Middleware-Physik-Engines werden in der großen Mehrheit der heutigen Videospiele verwendet, weil sie Spieleentwickler davon befreien , ihren eigenen Code schreiben zu müssen, der klassische Mechanik (Newtonsche Physik) implementiert , um beispielsweise Soft-Body-Dynamik zu machen .

Geschichte

Was heute als PhysX bekannt ist, entstand als eine Physik-Simulations-Engine namens NovodeX. Entwickelt wurde die Engine von der Schweizer Firma NovodeX AG, einem Spin-off der ETH Zürich . Im Jahr 2004 erwarb Ageia die NovodeX AG und begann mit der Entwicklung einer Hardwaretechnologie, die physikalische Berechnungen beschleunigen und die CPU unterstützen kann. Ageia nannte die Technologie PhysX, das SDK wurde von NovodeX in PhysX umbenannt und die Beschleunigerkarten wurden PPUs (Physics Processing Units) genannt.

Das erste Spiel, das PhysX verwendet, war Bet On Soldier: Blood Sport (2005).

Im Jahr 2008 wurde Ageia selbst vom Grafiktechnologiehersteller Nvidia übernommen. Nvidia begann damit, die PhysX- Hardwarebeschleunigung für seine GeForce-Grafikkarten zu aktivieren und stellte schließlich die Unterstützung für Ageia-PPUs ein.

PhysX SDK 3.0 wurde im Mai 2011 veröffentlicht und stellt eine bedeutende Neufassung des SDK dar, die Verbesserungen wie effizienteres Multithreading und eine einheitliche Codebasis für alle unterstützten Plattformen mit sich bringt .

Auf der GDC 2015 stellte Nvidia den Quellcode für PhysX auf GitHub zur Verfügung , erforderte jedoch eine Registrierung unter developer.nvidia.com. Das proprietäre SDK wurde Entwicklern sowohl für die kommerzielle als auch für die nichtkommerzielle Nutzung auf Windows- , Linux- , macOS- , iOS- und Android- Plattformen kostenlos zur Verfügung gestellt.

Am 3. Dezember 2018 wurde PhysX unter einer 3-Klausel-BSD-Lizenz als Open Source veröffentlicht , aber diese Änderung galt nur für Computer- und mobile Plattformen.

PhysX 5.0 wurde im Dezember 2019 angekündigt, aber aufgrund der COVID-19-Pandemie nicht der Öffentlichkeit zugänglich gemacht .

Merkmale

Die PhysX-Engine und das SDK sind für Microsoft Windows, macOS, Linux, PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS und Android verfügbar.

PhysX ist ein SDK für die Physiksimulation mit mehreren Threads. Es unterstützt die Starrkörperdynamik , weiche Körperdynamik (wie Tuch Simulation , einschließlich Reiß- und unter Druck Tuch), ragdolls und Zeichen Controller, Fahrzeugdynamik, Partikel und volumetrische Strömungssimulation.

Hardware-Beschleunigung

Vergleich der Physikstufen in Mafia II.
(PC) Der obere Screenshot zeigt, wie in Mafia II Trümmer simuliert werden, wenn PhysX in den Spieleinstellungen auf die höchste Stufe gestellt wird. Der untere Screenshot zeigt eine ähnliche Szene, bei der PhysX auf die unterste Stufe gedreht ist.

PPU

Eine physikalische Verarbeitungseinheit (PPU) ist ein Prozessor speziell entwickelt , um die Berechnungslast auf der CPU zu verringern, insbesondere Berechnungen mit Physik. PhysX-PPUs wurden Verbrauchern in Form von PCI- oder PCIe-Karten von ASUS , BFG Technologies , Dell und ELSA Technology angeboten .

Ab Version 2.8.3 des PhysX SDK wurde die Unterstützung für PPU-Karten eingestellt und PPU-Karten werden nicht mehr hergestellt. Die letzte Version der von Ageia entwickelten PhysX-PPU-Standalone-Karte hatte ungefähr die gleiche PhysX-Leistung wie eine dedizierte 9800GTX.

GPU

Nach der Übernahme von Ageia durch Nvidia wandte sich die PhysX-Entwicklung von PPU-Erweiterungskarten ab und konzentrierte sich stattdessen auf die GPGPU- Fähigkeiten moderner GPUs.

Moderne GPUs sind sehr effizient bei der Manipulation und Anzeige von Computergrafiken und ihre hochparallele Struktur macht sie effektiver als Allzweck-CPUs, um physikalische Simulationen mit PhysX zu beschleunigen.

Jede CUDA- fähige GeForce-Grafikkarte (8-Serie oder neuere GPU mit mindestens 32 Kernen und mindestens 256 MB dedizierter Grafikspeicher) kann PhysX nutzen, ohne dass eine dedizierte PhysX-Karte installiert werden muss.

APEX

Die Nvidia APEX-Technologie ist ein skalierbares dynamisches Framework für mehrere Plattformen, das auf dem PhysX SDK basiert. Es wurde erstmals im August 2010 in Mafia II eingeführt . Nvidias APEX umfasst die folgenden Module: APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField und ehemals APEX Vegetation, das 2011 eingestellt wurde.

Ab Version 1.4.1 ist das APEX SDK veraltet.

Nvidia FleX

FleX ist eine partikelbasierte Simulationstechnik für visuelle Echtzeiteffekte. Traditionell werden visuelle Effekte mit einer Kombination von Elementen erzeugt, die mit speziellen Solvern für starre Körper, Flüssigkeiten, Kleidung usw. erstellt wurden. Da FleX eine einheitliche Partikeldarstellung für alle Objekttypen verwendet, ermöglicht es neue Effekte, bei denen verschiedene simulierte Substanzen miteinander interagieren können einwandfrei. Solche vereinheitlichten Physik-Solver sind ein fester Bestandteil der Offline-Computergrafikwelt , in der Tools wie nCloth von Autodesk Maya und Lagoa von Softimage weit verbreitet sind. Das Ziel von FleX ist es, die Leistungsfähigkeit von GPUs zu nutzen, um die Fähigkeiten dieser Offline-Anwendungen auf Echtzeit-Computergrafiken zu übertragen.

Kritik von Real World Technologies

Am 5. Juli 2010 veröffentlichte Real World Technologies eine Analyse der PhysX-Architektur. Laut dieser Analyse basierte der größte Teil des damals in PhysX-Anwendungen verwendeten Codes auf x87- Anweisungen ohne jegliche Multithreading-Optimierung. Dies kann zu erheblichen Leistungseinbußen führen, wenn PhysX-Code auf der CPU ausgeführt wird. Der Artikel schlug vor, dass ein PhysX-Rewrite mit SSE- Anweisungen die Leistungsdiskrepanz zwischen CPU-PhysX und GPU-PhysX erheblich verringern kann.

Als Reaktion auf die Analyse von Real World Technologies sagte Mike Skolones, Produktmanager von PhysX, dass die SSE-Unterstützung zurückgeblieben sei, da die meisten Spiele zuerst für Konsolen entwickelt und dann auf den PC portiert würden. Infolgedessen laufen diese Spiele auf modernen Computern schneller und besser als die Konsolen, selbst mit geringer oder keiner Optimierung. Der Senior PR-Manager von Nvidia, Bryan Del Rizzo, erklärte, dass Multithreading bereits mit CPU PhysX 2.x verfügbar sei und es an den Entwicklern liege, es zu nutzen. Er erklärte auch, dass automatisches Multithreading und SSE mit Version 3 des PhysX SDK eingeführt würden.

PhysX SDK 3.0 wurde im Mai 2011 veröffentlicht und stellt eine bedeutende Neufassung des SDK dar, die Verbesserungen wie effizienteres Multithreading und eine einheitliche Codebasis für alle unterstützten Plattformen mit sich bringt.

Verwendungszweck

PhysX in Videospielen

Die PhysX-Technologie wird von Game-Engines wie Unreal Engine (ab Version 3), Unity , Gamebryo , Vision (ab Version 6), Instinct Engine, Panda3D , Diesel , Torque , HeroEngine und BigWorld verwendet .

Als eine der wenigen großen Physik-Engines wird es in vielen Spielen verwendet, wie The Witcher 3: Wild Hunt , Warframe , Killing Floor 2 , Fallout 4 , Batman: Arkham Knight , Borderlands 2 usw. Die meisten dieser Spiele verwenden die CPU, um die physikalischen Simulationen zu verarbeiten.

Videospiele mit optionaler Unterstützung für hardwarebeschleunigtes PhysX enthalten oft zusätzliche Effekte wie zerreißbares Tuch, dynamischer Rauch oder simulierte Partikelablagerungen.

PhysX in anderer Software

Andere Software mit PhysX-Unterstützung umfasst:

Siehe auch

Verweise

Externe Links