PhysX - PhysX

PhysX
NVIDIA PhysX Logo.png
Originale forfattere NovodeX AG ( ETH Zürich )
Udvikler (er) Nvidia Corporation
(2008-nu)
Ageia
(2004-2008)
NovodeX AG
(2001-2004)
Stabil udgivelse
9.21.0713 / 12. oktober 2021 ( 2021-10-12 )
Depot https://github.com/NVIDIAGameWorks/PhysX
Operativ system Microsoft Windows , macOS , Linux , PlayStation 2 , PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS , Android
Type Fysik simulering
Licens BSD-3
Internet side Nvidia PhysX udviklerwebsted

PhysX er en open-source realtime fysikmotor mellemware SDK udviklet af Nvidia som en del af Nvidia GameWorks softwarepakke .

Oprindeligt skulle videospil, der understøtter PhysX, fremskyndes af PhysX PPU ( udvidelseskort designet af Ageia ). Efter Ageias opkøb af Nvidia er dedikerede PhysX -kort imidlertid afbrudt til fordel for, at API'et køres på CUDA -aktiverede GeForce GPU'er . I begge tilfælde tillod hardware acceleration at aflaste fysikberegninger fra CPU'en , så den i stedet kunne udføre andre opgaver.

PhysX og andre mellemvarefysikmotorer bruges i et stort flertal af nutidens videospil, fordi de frigør spiludviklere fra at skulle skrive deres egen kode, der implementerer klassisk mekanik (Newtonsk fysik) til f.eks. Blød kropsdynamik .

Historie

Det, der i dag er kendt som PhysX, stammer fra en fysiksimuleringsmotor kaldet NovodeX. Motoren blev udviklet af det schweiziske firma NovodeX AG, en spin-off fra ETH Zürich . I 2004 Ageia erhvervede NovodeX AG og begyndte at udvikle en hardware teknologi, der kan accelerere fysik beregninger, medvirken CPU'en. Ageia kaldte teknologien PhysX, SDK blev omdøbt fra NovodeX til PhysX, og acceleratorkortene blev kaldt PPU'er (Physics Processing Units).

Det første spil, der brugte PhysX, var Bet On Soldier: Blood Sport (2005).

I 2008 blev Ageia selv opkøbt af grafikteknologiproducenten Nvidia. Nvidia begyndte at muliggøre PhysX hardware acceleration på sin serie af GeForce -grafikkort og droppede til sidst support til Ageia PPU'er.

PhysX SDK 3.0 blev udgivet i maj 2011 og repræsenterede en betydelig omskrivning af SDK'et, hvilket bragte forbedringer som mere effektiv multithreading og en samlet kodebase til alle understøttede platforme.

GDC 2015 stillede Nvidia kildekoden til PhysX til rådighed på GitHub , men krævede registrering på developer.nvidia.com. Den proprietære SDK blev leveret gratis til udviklere til både kommerciel og ikke-kommerciel brug på Windows , Linux , macOS , iOS og Android platforme.

Den 3. december 2018 blev PhysX gjort til open source under en 3-klausul BSD-licens , men denne ændring gjaldt kun computer- og mobilplatforme.

PhysX 5.0 blev annonceret i december 2019, men er ikke frigivet til offentligheden på grund af COVID-19-pandemien .

Funktioner

PhysX -motoren og SDK er tilgængelige til Microsoft Windows, macOS, Linux, PlayStation 3 , PlayStation 4 , Xbox 360 , Xbox One , Wii , iOS og Android.

PhysX er en multi-threaded fysiksimulering SDK. Det understøtter stiv kropsdynamik , blød kropsdynamik (som kludssimulering , herunder rive- og trykdug), ragdolls og karakterkontroller, køretøjsdynamik, partikler og volumetrisk væskesimulering.

Hardware acceleration

Sammenligning af fysikniveauer i Mafia II.
(PC) Det øverste skærmbillede viser, hvordan snavs simuleres i Mafia II, når PhysX vendes til det højeste niveau i spilindstillingerne. Det nederste skærmbillede viser en lignende scene med PhysX vendt til det laveste niveau.

PPU

En fysikbehandlingsenhed (PPU) er en processor, der er specielt designet til at lette beregningsbyrden for CPU'en, specielt beregninger, der involverer fysik. PhysX PPU'er blev tilbudt forbrugerne i form af PCI- eller PCIe -kort af ASUS , BFG Technologies , Dell og ELSA Technology .

Fra og med version 2.8.3 af PhysX SDK blev support til PPU -kort droppet, og PPU -kort fremstilles ikke længere. Den sidste inkarnation af PhysX PPU standalone -kort designet af Ageia havde nogenlunde samme PhysX -ydeevne som et dedikeret 9800GTX.

GPU

Efter Nvidias erhvervelse af Ageia vendte PhysX -udviklingen fra PPU -udvidelseskort og fokuserede i stedet på GPGPU -mulighederne i moderne GPU'er.

Moderne GPU'er er meget effektive til at manipulere og vise computergrafik, og deres meget parallelle struktur gør dem mere effektive end almindelige CPU'er til at accelerere fysiske simuleringer ved hjælp af PhysX.

Ethvert CUDA -klar GeForce -grafikkort (8 -serie eller nyere GPU med minimum 32 kerner og minimum 256 MB dedikeret grafikhukommelse) kan drage fordel af PhysX uden at skulle installere et dedikeret PhysX -kort.

SPIDS

Nvidia APEX-teknologi er en skalerbar dynamikramme med flere platforme, der er bygget op omkring PhysX SDK. Det blev først introduceret i Mafia II i august 2010. Nvidias APEX består af følgende moduler: APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField og tidligere APEX Vegetation, som blev suspenderet i 2011.

Fra version 1.4.1 er APEX SDK forældet.

Nvidia FleX

FleX er en partikelbaseret simuleringsteknik til visuelle effekter i realtid. Traditionelt foretages visuelle effekter ved hjælp af en kombination af elementer, der er skabt ved hjælp af specialiserede opløsninger til stive kroppe, væsker, tøj osv. Fordi FleX bruger en samlet partikelrepræsentation for alle objekttyper, muliggør det nye effekter, hvor forskellige simulerede stoffer kan interagere med hinanden problemfrit. Sådanne forenede fysikløsere er et hæfteklammer i offline computergrafikverdenen , hvor værktøjer som Autodesk Mayas nCloth og Softimages Lagoa er meget udbredt. Målet for FleX er at bruge kraften i GPU'er til at bringe mulighederne i disse offline applikationer til computergrafik i realtid.

Kritik fra Real World Technologies

Den 5. juli 2010 offentliggjorde Real World Technologies en analyse af PhysX -arkitekturen. Ifølge denne analyse var det meste af koden, der blev brugt i PhysX-applikationer dengang, baseret på x87- instruktioner uden nogen multi-threading-optimering. Dette kan forårsage betydelige ydelsesfald, når PhysX -kode køres på CPU'en. Artiklen foreslog, at en PhysX -omskrivning ved hjælp af SSE -instruktioner kan reducere ydeevne mellem CPU PhysX og GPU PhysX væsentligt.

Som svar på Real World Technologies -analysen sagde Mike Skolones, produktchef for PhysX, at SSE -support var blevet efterladt, fordi de fleste spil først er udviklet til konsoller og derefter portet til pc'en. Som et resultat kører moderne computere disse spil hurtigere og bedre end konsolerne, selv med ringe eller ingen optimering. Senior PR-manager for Nvidia, Bryan Del Rizzo, forklarede, at multi-threading allerede havde været tilgængelig med CPU PhysX 2.x, og at det havde været op til udvikleren at gøre brug af det. Han udtalte også, at automatisk multithreading og SSE ville blive introduceret med version 3 af PhysX SDK.

PhysX SDK 3.0 blev udgivet i maj 2011 og repræsenterede en betydelig omskrivning af SDK'et, hvilket bragte forbedringer som mere effektiv multithreading og en samlet kodebase til alle understøttede platforme.

Anvendelse

PhysX i videospil

PhysX -teknologien bruges af spilmotorer som Unreal Engine (version 3 og fremefter), Unity , Gamebryo , Vision (version 6 og fremefter), Instinct Engine, Panda3D , Diesel , Torque , HeroEngine og BigWorld .

Som en af ​​de håndfuld store fysikmotorer bruges den i mange spil, såsom The Witcher 3: Wild Hunt , Warframe , Killing Floor 2 , Fallout 4 , Batman: Arkham Knight , Borderlands 2 osv. De fleste af disse spil bruger CPU'en til at behandle fysiksimuleringerne.

Videospil med valgfri understøttelse af hardware-accelereret PhysX inkluderer ofte yderligere effekter, såsom tørret klud, dynamisk røg eller simuleret partiklerester.

PhysX i anden software

Anden software med PhysX -understøttelse omfatter:

Se også

Referencer

eksterne links