Fizyka X - PhysX

PhysX
Logo NVIDIA PhysX.png
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 ( 2021-10-12 )
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

Porównanie poziomów fizyki w Mafii II.
(PC) Górny zrzut ekranu pokazuje, jak szczątki są symulowane w Mafii II, gdy PhysX jest ustawiony na najwyższy poziom w ustawieniach gry. Dolny zrzut ekranu pokazuje podobną scenę z PhysX włączonym do najniższego poziomu.

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:

Zobacz też

Bibliografia

Zewnętrzne linki