Кіріспе
PhysX – Nvidia GameWorks бағдарламалық кешенінің бір бөлігі ретінде Nvidia компаниясымен әзірленген ашық кодты нақты уақыт физикалық қозғалтқыш SDK. Алғашқыда PhysX қолдауы бар бейне ойындар PhysX PPU (Ageia компаниясы жасаған кеңейту карталары) арқылы үдетілуі керек еді. Бірақ, Nvidia Ageia компаниясын сатып алғаннан кейін, арнайы PhysX карталары тоқтатылып, API CUDA қолдауы бар GeForce GPU-да жұмыс істей бастады. Екі жағдайда да аппараттық үдету физикалық есептеулерді процессордан (CPU) босатып, оның орнына басқа міндеттерді орындауға мүмкіндік берді. PhysX және басқа да аралық бағдарламалық физикалық қозғалтқыштар көптеген бейне ойындарда қолданылады, себебі олар ойын жасаушыларды классикалық механиканы (Ньютон физикасын) іске асыратын өз кодын жазудан босатады, мысалы, икемді дене динамикасын жасау үшін.
PhysX is an open source realtime physics engine middleware SDK developed by Nvidia as a part of Nvidia GameWorks software suite. Initially, video games supporting PhysX were meant to be accelerated by PhysX PPU (expansion cards designed by Ageia). However, after Ageia's acquisition by Nvidia, dedicated PhysX cards have been discontinued in favor of the API being run on CUDA enabled GeForce GPUs. In both cases, hardware acceleration allowed for the offloading of physics calculations from the CPU, allowing it to perform other tasks instead. PhysX and other middleware physics engines are used in many video games today because they free game developers from having to write their own code that implements classical mechanics (Newtonian physics) to do, for example, soft body dynamics.
Тарих
Қазіргі PhysX деп аталатын физикалық симуляция қозғалтқышы NovodeX ретінде пайда болды. Қозғалтқышты швейцариялық NovodeX AG компаниясы, ETH Zurich компаниясының еншілес кәсіпорны әзірледі. 2004 жылы Ageia компаниясы NovodeX AG компаниясын сатып алып, физикалық есептеулерді жеделдететін, процессорға (CPU) көмектесетін аппараттық технологияны әзірлеуді бастады. Ageia бұл технологияны PhysX деп атады, SDK NovodeX-тен PhysX-ке өзгертілді, ал үдеткіш карталары PPU (физикалық өңдеу бірліктері) деп аталды. PhysX технологиясын қолданған алғашқы бейне ойын – 2005 жылдың қыркүйегінде тек Ресейдегі ойын дүкендерінде шыққан "Сталиннің метросы" болды. 2008 жылы Ageia компаниясын графикалық технология өндіруші Nvidia сатып алды. Nvidia GeForce графикалық карталарының желісінде PhysX аппараттық үдетуін іске қосып, ақырында Ageia PPU-ларын қолдауды тоқтатты. Меншікті SDK әзірлеушілерге Windows, Linux, macOS, iOS және Android платформаларында коммерциялық және коммерциялық емес мақсатта пайдалану үшін тегін ұсынылды. 2018 жылдың 3 желтоқсанында PhysX 3 тармақты BSD лицензиясы бойынша ашық кодқа айналдырылды, бірақ бұл өзгеріс компьютерлік және мобильді платформаларға ғана қатысты болды. 2022 жылдың 8 қарашасында ашық кодты нұсқа PhysX 5-ке жаңартылды, ол да сол 3 тармақты BSD лицензиясы бойынша таратылды.
Ерекшеліктері
PhysX қозғалтқышы мен SDK Microsoft Windows, macOS, Linux, PlayStation 4, Xbox 360, Xbox One, Wii, iOS және Android жүйелері үшін қолжетімді. BFG Technologies, Dell және ELSA Technology компаниялары. PhysX SDK 2.8.3 нұсқасынан бастап PPU карталарына қолдау тоқтатылды және PPU карталары енді өндірілмейді. Ageia компаниясы жасаған PhysX PPU дербес картасының соңғы нұсқасы 9800GTX картасымен шамалас PhysX өнімділігіне ие болды.
GPU
Nvidia Ageia компаниясын сатып алғаннан кейін PhysX әзірлеуі PPU кеңейту карталарынан бас тартып, заманауи GPU-лардың GPGPU мүмкіндіктеріне көшті. Заманауи GPU-лар компьютерлік графиканы өңдеу және көрсетуде өте тиімді, ал олардың жоғары параллельді құрылымы PhysX қолданып физикалық симуляцияларды жеделдету үшін жалпы мақсаттағы процессорлардан (CPU) артық тиімділік береді. Кез келген CUDA қолдауы бар GeForce графикалық картасы (8 сериясы немесе одан кейінгі GPU, кемінде 32 ядросы және кемінде 256 МБ арнайы графикалық жадысы бар) арнайы PhysX картасын орнату қажеттілігінсіз PhysX мүмкіндіктерін пайдалана алады.
АПЕКС
Nvidia APEX технологиясы – PhysX SDK-ге негізделген, көп платформалы, кеңейтілген динамикалық жүйе. Ол алғаш рет 2010 жылдың тамызында Mafia II ойынында пайда болды. Nvidia-ның APEX келесі модульдерден тұрады: APEX Destruction, APEX Clothing, APEX Particles, APEX Turbulence, APEX ForceField және бұрынғы APEX Vegetation, ол 2011 жылы қолданудан тоқтатылды. 1.4.1 нұсқасынан бастап APEX SDK қолданылмайды.
Nvidia FleX
FleX – нақты уақытты визуалды эффектілерді жасауға арналған бөлшектерге негізделген симуляциялау техникасы. Дәстүрлі түрде визуалды эффектілер қатты денелер, сұйықтықтар, киім және т.б. үшін арнайы шешімдерді қолдана отырып жасалған элементтердің комбинациясы арқылы жасалады. FleX барлық нысан түрлері үшін бірыңғай бөлшектерді қолдану арқасында, әртүрлі симуляцияланған заттардың бірін-бірімен үздіксіз әрекеттесетін жаңа эффектілерді жасауға мүмкіндік береді. Мұндай біріктірілген физикалық шешімдер офлайн компьютерлік графика әлемінің маңызды бөлігі болып табылады, онда Autodesk Maya-ның nCloth және Softimage-тың Lagoa сияқты құралдар кеңінен қолданылады. FleX-тің мақсаты – графикалық процессорлардың қуатын пайдаланып, осы офлайн қолданбалардың мүмкіндіктерін нақты уақыт компьютерлік графикасына жеткізу.
Нақты технологиялар сынға алынады
2010 жылдың 5 шілдесінде Real World Technologies PhysX архитектурасын талдап жариялады. Бұл талдауға сәйкес, сол кездегі PhysX қолданбаларында қолданылатын кодтың көп бөлігі мультититақырламалы оптимизациясыз x87 нұсқауларына негізделген. Бұл CPU-да PhysX кодын іске қосқанда өнімділіктің күрт төмендеуіне алып келуі мүмкін. Мақалада SSE нұсқауларын пайдаланып PhysX-ті қайта жазу CPU PhysX және GPU PhysX арасындағы өнімділік айырмашылығын едәуір азайтуы мүмкін екені айтылды. Real World Technologies талдауына жауап ретінде PhysX өнімдерін басқарушы Майк Сколонес, көптеген ойындар алдымен консольдар үшін жасалғандықтан, содан кейін ғана ПК-ға көшірілгендіктен SSE қолдауына көңіл бөлмегендерін мәлімдеді. Нәтижесінде, қазіргі заманғы компьютерлер осы ойындарды консольдардан гөрі жылдам және жақсырақ іске қосады, тіпті аз немесе ешқандай оптимизациясыз. Nvidia компаниясының бас PR менеджері Брайан Дель Риццо мультититақырлама CPU PhysX 2.x нұсқасында бұдан бұрын қолжетімді болғанын және оны пайдалану әзірлеушінің міндеті болғанын түсіндірді. Ол сондай-ақ PhysX SDK 3 нұсқасымен автоматты мультититақырлама және SSE енгізілетінін хабарлады. PhysX SDK 3.0 2011 жылдың мамыр айында жарық көрді және SDK-ны маңызды түрде қайта жазуды білдірді, соның ішінде тиімді мультититақырлама және қолдау көрсетілетін барлық платформалар үшін бірыңғай код базасы сияқты жақсартулар енгізілді. Panda3D, Diesel, Torque, HeroEngine және BigWorld.