Fizyka X - PhysX
Pierwotny autor (autorzy) | NovodeX AG ( ETH Zurych ) |
---|---|
Deweloper(zy) |
Nvidia Corporation (2008-obecnie) Ageia (2004-2008) NovodeX AG (2001-2004) |
Wersja stabilna | 9.21.0713 / 12 października 2021
|
Magazyn | https://github.com/NVIDIAGameWorks/PhysX |
System operacyjny | Microsoft Windows , macOS , Linux , PlayStation 2 , PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS , Android |
Rodzaj | Symulacja fizyki |
Licencja | BSD-3 |
Strona internetowa | Witryna programisty Nvidia PhysX |
PhysX jest open-source w czasie rzeczywistym silnik fizyki middleware SDK opracowany przez Nvidia jako część Nvidia GameWorks pakietu oprogramowania .
Początkowo gry wideo obsługujące PhysX miały być akcelerowane przez PhysX PPU ( karty rozszerzeń zaprojektowane przez Ageia ). Jednak po przejęciu Ageii przez Nvidię, dedykowane karty PhysX zostały wycofane na rzecz API działającego na procesorach graficznych GeForce z obsługą CUDA . W obu przypadkach akceleracja sprzętowa pozwoliła na odciążenie procesora obliczeń fizycznych , umożliwiając mu wykonywanie innych zadań.
PhysX i inne silniki fizyki oprogramowania pośredniego są używane w ogromnej większości dzisiejszych gier wideo, ponieważ uwalniają twórców gier od konieczności pisania własnego kodu, który implementuje mechanikę klasyczną (fizykę newtonowską) w celu wykonania, na przykład, dynamiki ciała miękkiego .
Historia
To, co jest dziś znane jako PhysX, powstało jako silnik symulacji fizyki o nazwie NovodeX. Silnik został opracowany przez szwajcarską firmę NovodeX AG, spin-off ETH Zurich . W 2004 roku Ageia przejęła NovodeX AG i zaczęła opracowywać technologię sprzętową, która może przyspieszyć obliczenia fizyczne, wspomagając procesor. Ageia nazwała technologię PhysX, nazwa SDK została zmieniona z NovodeX na PhysX, a karty akceleratorów nazwano PPU (ang. Physics Processing Units).
Pierwszą grą, w której wykorzystano PhysX, była Bet On Soldier: Blood Sport (2005).
W 2008 roku Ageia została przejęta przez producenta technologii graficznych Nvidia. Nvidia zaczęła włączać akcelerację sprzętową PhysX w swojej linii kart graficznych GeForce i ostatecznie zrezygnowała z obsługi PPU Ageia.
PhysX SDK 3.0 został wydany w maju 2011 r. i stanowił znaczące przepisanie SDK, wprowadzając ulepszenia, takie jak wydajniejsza wielowątkowość i ujednolicona baza kodu dla wszystkich obsługiwanych platform.
Na GDC 2015 Nvidia udostępniła kod źródłowy PhysX na GitHub , ale wymagała rejestracji na stronie developer.nvidia.com. Zastrzeżone SDK została udostępniona deweloperom za darmo do użytku komercyjnego i niekomercyjnego na systemie Windows , Linux , MacOS , iOS i Android platformy.
3 grudnia 2018 r. PhysX został udostępniony jako open source na 3-klauzulowej licencji BSD , ale ta zmiana dotyczyła tylko platform komputerowych i mobilnych.
PhysX 5.0 został ogłoszony w grudniu 2019 r., ale nie został opublikowany z powodu pandemii COVID-19 .
Cechy
Silnik PhysX i SDK są dostępne dla systemów Microsoft Windows, macOS, Linux, PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS i Android.
PhysX to wielowątkowy pakiet SDK do symulacji fizyki. To umożliwia sztywne dynamiki ciała , miękkie dynamika ciała (np symulacji tkaniny , w tym łzawienie i tkaniny pod ciśnieniem), ragdolls i charakteru, kontrolery dynamiki pojazdu, cząstek i objętościowe symulacji płynu.
Przyspieszenie sprzętowe
PPU
Jednostka przetwarzania fizyki (PPU) to procesor specjalnie zaprojektowany w celu zmniejszenia obciążenia obliczeniowego procesora, w szczególności obliczeń związanych z fizyką. PPU PhysX były oferowane konsumentom w postaci kart PCI lub PCIe przez firmy ASUS , BFG Technologies , Dell i ELSA Technology .
Począwszy od wersji 2.8.3 PhysX SDK, obsługa kart PPU została porzucona i karty PPU nie są już produkowane. Ostatnie wcielenie samodzielnej karty PhysX PPU zaprojektowanej przez Ageia miało mniej więcej taką samą wydajność PhysX, jak dedykowana 9800GTX.
GPU
Po przejęciu firmy Ageia przez Nvidię, rozwój PhysX odszedł od kart rozszerzeń PPU i skupił się na możliwościach GPGPU nowoczesnych procesorów graficznych.
Nowoczesne procesory graficzne są bardzo wydajne w manipulowaniu i wyświetlaniu grafiki komputerowej, a ich wysoce równoległa struktura czyni je bardziej efektywnymi niż procesory ogólnego przeznaczenia w przyspieszaniu fizycznych symulacji przy użyciu PhysX.
Każda karta graficzna GeForce z obsługą CUDA (8-serii lub nowszy procesor graficzny z minimum 32 rdzeniami i minimum 256 MB dedykowanej pamięci graficznej) może korzystać z PhysX bez konieczności instalowania dedykowanej karty PhysX.
WIERZCHOŁEK
Technologia Nvidia APEX to wieloplatformowy, skalowalny framework do dynamiki zbudowany na bazie PhysX SDK. Po raz pierwszy został wprowadzony w grze Mafia II w sierpniu 2010 roku. APEX Nvidii składa się z następujących modułów: APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField i dawniej APEX Vegetation, który został zawieszony w 2011 roku.
Od wersji 1.4.1 APEX SDK jest przestarzały.
Nvidia FleX
FleX to oparta na cząsteczkach technika symulacji efektów wizualnych w czasie rzeczywistym. Tradycyjnie efekty wizualne są tworzone przy użyciu kombinacji elementów utworzonych za pomocą specjalistycznych solwerów dla ciał sztywnych, płynów, odzieży itp. Ponieważ FleX wykorzystuje ujednoliconą reprezentację cząstek dla wszystkich typów obiektów, umożliwia to nowe efekty, w których różne symulowane substancje mogą ze sobą współdziałać płynnie. Takie zunifikowane solwery fizyki są podstawą w świecie grafiki komputerowej offline , gdzie narzędzia takie jak nCloth firmy Autodesk Maya i Lagoa firmy Softimage są szeroko stosowane. Celem FleX jest wykorzystanie mocy procesorów graficznych do przeniesienia możliwości tych aplikacji offline do grafiki komputerowej w czasie rzeczywistym.
Krytyka z Real World Technologies
5 lipca 2010 r. firma Real World Technologies opublikowała analizę architektury PhysX. Zgodnie z tą analizą, większość kodu używanego w aplikacjach PhysX w tamtym czasie była oparta na instrukcjach x87 bez jakiejkolwiek optymalizacji wielowątkowej. Może to spowodować znaczne spadki wydajności podczas uruchamiania kodu PhysX na procesorze. Artykuł sugerował, że przepisanie PhysX przy użyciu instrukcji SSE może znacznie zmniejszyć rozbieżność wydajności między procesorem PhysX a procesorem graficznym PhysX.
W odpowiedzi na analizę Real World Technologies Mike Skolones, menedżer produktu w PhysX, powiedział, że obsługa SSE została pozostawiona w tyle, ponieważ większość gier jest najpierw opracowywana na konsole, a następnie przenoszona na komputery PC. W rezultacie współczesne komputery uruchamiają te gry szybciej i lepiej niż konsole, nawet przy niewielkiej optymalizacji lub bez niej. Starszy kierownik ds. PR firmy Nvidia, Bryan Del Rizzo, wyjaśnił, że wielowątkowość była już dostępna w CPU PhysX 2.x i że to od dewelopera należało skorzystać z tej możliwości. Stwierdził również, że automatyczna wielowątkowość i SSE zostaną wprowadzone w wersji 3 PhysX SDK.
PhysX SDK 3.0 został wydany w maju 2011 roku i stanowił znaczące przepisanie SDK, wprowadzając ulepszenia, takie jak wydajniejsza wielowątkowość i ujednolicona baza kodu dla wszystkich obsługiwanych platform.
Stosowanie
PhysX w grach wideo
Technologia PhysX jest używana przez silniki gier, takie jak Unreal Engine (od wersji 3), Unity , Gamebryo , Vision (od wersji 6), Instinct Engine, Panda3D , Diesel , Torque , HeroEngine i BigWorld .
Jako jeden z nielicznych dużych silnik fizyki, jest on stosowany w wielu grach, takich jak The Witcher 3: Wild Hunt , Warframe , Killing Floor 2 , Fallout 4 , Batman: Arkham Knighta , Borderlands 2 , itd Większość z tych gier użyć CPU do przetwarzania symulacji fizyki.
Gry wideo z opcjonalną obsługą akceleracji sprzętowej PhysX często zawierają dodatkowe efekty, takie jak odrywana tkanina, dynamiczny dym lub symulowane szczątki cząstek.
PhysX w innym oprogramowaniu
Inne oprogramowanie z obsługą PhysX obejmuje:
- Active Worlds (AW), platforma wirtualnej rzeczywistości 3D z klientem działającym w systemie Windows
- Amazon Lumberyard , silnik do tworzenia gier 3D opracowany przez Amazon
- Autodesk 3ds Max , Autodesk Maya i Autodesk Softimage , pakiety animacji komputerowych
- DarkBASIC Professional (z aktualizacją DarkPHYSICS), język programowania przeznaczony do tworzenia gier
- DX Studio , zintegrowane środowisko programistyczne do tworzenia interaktywnej grafiki 3D
- Futuremark „s 3DMark06 oraz Vantage narzędzi porównawczych
- Microsoft Robotics Studio , środowisko do sterowania i symulacji robotów
- Nvidia SuperSonic Sled i Raging Rapids Ride, prezentacje technologii
- OGRE (poprzez opakowanie NxOgre), silnik renderujący o otwartym kodzie źródłowym
- The Physics Abstraction Layer , fizyczny system abstrakcji API symulacji (zapewnia obsługę COLLADA i Scythe Physics Editor dla PhysX)
- Rayfire, wtyczka do Autodesk 3ds Max, która umożliwia szczelinowanie i inne symulacje fizyki
- Physics Engine Evaluation Lab — narzędzie przeznaczone do oceny, porównywania i testowania silników fizycznych.
- Oprogramowanie do tworzenia gier Unreal Engine firmy Epic Games . Unreal Engine 4.26 i nowsze oficjalnie wycofały PhysX.
- Unity (silnik gry) firmy Unity ApS. Stos technologii zorientowanej na dane firmy Unity nie korzysta z technologii PhysX.
Zobacz też
- DirectX
- Pocisk (oprogramowanie)
- Havok (oprogramowanie)
- Otwórz silnik dynamiczny
- Dynamika gry Newtona
- OpenGL
- Wir (oprogramowanie)
- AGX Multifizyka