Hirdetés

PhysX: átverés, vagy sem?

Újabb fejezethez ért az NVIDIA sokat kritizált PhysX technológiájának története. Legutóbb a Real World Technologies alaposan kielemezte a fizikai motor vitatott működését, és nem túl pozitív eredménnyel zárult a vizsgálat. A PhysXInfo a nemrég megjelent Mafia 2 című alkotást vette górcső alá, és a program futtatásának elemzése során nem várt eredmények születtek.

A Mafia 2 esetében a technikai oldalról annyit érdemes tudni, hogy aktivált APEX opció mellett borzalmasan nő a gépigény. Az APEX lényegében egy olyan PhysX kiterjesztés, ami megkönnyíti a fejlesztőnek a kívánt eljárások integrálását, illetve a jelenetben szimulált részecskék száma is széles skálán változtatható, függően a kívánt minőségtől. Természetesen több részecske nagyobb erőforrásigénnyel rendelkezik, így a legjobb megoldás a Mafia 2 mellett a közepes és a magas APEX szint alkalmazása volt, ennek megfelelően a felhasználó a hardver képességeihez igazíthatja a játékot. A gondot az jelenti, hogy már a közepes minőség is a megszokottnál jóval erősebb grafikus kártyát követel, így magas grafikai részletesség mellett szükség van legalább egy GeForce GTX 470-re, amennyiben az akciójelenetekben is követelmény az elfogadható 30 képkocka/másodperc feletti sebesség. A magas APEX szint a dedikált PhysX gyorsításhoz van tervezve, így egy GPU-val nem is érdemes ezt a beállítást erőltetni. Persze erre fel is hívják a figyelmet a fejlesztők a hivatalosan közölt gépigényben, így senkit sem érhetett meglepetésként az APEX melletti teljesítmény.


A GPU-s gyorsítás hatása (forrás: PhysXInfo.com)

Ahelyett, hogy beletörődnénk a PhysX átlagfelhasználók számára megfizethetetlen követelményeibe, érdemes kivizsgálni, hogy mégis mi okozza ezt a pokoli gépigényt. A Mafia 2 az első olyan játék, amiben bemutatkozik az APEX cloth modul, ami a karakterek által viselt ruha szimulációjáért felel. A játékban ez az elgondolás elég érdekesen van megoldva, ugyanis nemcsak a főszereplőn és a közelében álló embereken számítja a motor az effektet, hanem konkrétan a jelenetben szereplő összes karakteren. Ebből már rögtön következtetni lehet, hogy a PC-k nagy része ezen a ponton fekszik ki, ugyanis teljesen mindegy, hogy az adott szereplő csak pár pixelt tesz ki a képernyőn, a cloth szimulálás végbemegy rajta is. Ezek alapján nem is meglepő a pokoli gépigény, ám kifejezetten érthetetlen, hogy a fejlesztők, miért nem alkalmaznak valamilyen egyszerű LOD rendszerezést, ami gondoskodik arról, hogy a cloth modul csak az általunk irányított karakter közvetlen közelében működjön. Az sem a legjobb döntés, hogy néhány nem játékos karakter esetében csak a statikus cloth fut le, és ez független attól, hogy mennyire közel vagy távol áll az objektum a kamerától. Szerencsére az APEX teljesen moduláris felépítésű, így a fájlok törölgetésével komoly teljesítménynövekedés érhető el. A játék APEX könyvtárában találhatók a különböző modulok, és ezek eltávolításával az adott effekt kiüthető. Aki sebességnövekedésre vágyik, az törölje ki a cloth könyvtár tartalmát. Ennél szebb megoldás, ha meghagyjuk az „m2skeleton” és a „ClothRemapTable” fájlok mellett a „VIT” kezdetű állományokat, így az általunk kontrollált karakterre lefut a cloth modul. Az eredmény bámulatos, ugyanis a játék sebessége még PhysX gyorsítás nélkül is nagyon sokat javul.

Hiányzó folyamatok
Hiányzó folyamatok (forrás: PhysXInfo.com) [+]

Látható, hogy az APEX cloth modul alkalmazása eredetileg is sok kérdést vetett fel, de a java még csak most jön. A PhysXInfo a fenti fejlemények, és az alacsony teljesítmény hatására megvizsgálta az APEX működését, és a fájlok törölgetésével lemérték, hogy az egyes modulok mennyire terhelik a számítógépet, GPU-s PhysX gyorsítással és anélkül. A meglepetés nem maradt el, ugyanis a cloth modul kivételével a PhysX mindig gyorsult a GeForce kártya mellett. Na de mi a helyzet a ruhaszimulálással? Nos az eredmények alapján ez a modul minden esetben a központi processzoron fut. Az AgPerMon profilozó segítségével ezt sikerült bizonyítani is, ugyanis a Mafia 2 sohasem indította el az NgPrDeformable, az NgPrCloth és a _cuda_kernel_Deformable folyamatokat, amelyek a GPU alapú cloth modul futtatásáért felelnek.

Az utóbbi bekezdés újabb kérdéseket vet tehát fel a PhysX kapcsán, amelyekre a válasz még nem tisztázott. Lényegében két lehetőség áll fent. Lehet egy egyszerű hiba a programban, amit a fejlesztők és az NVIDIA nem vett észre, és azt hitték, hogy a APEX cloth modul tényleg ennyire gépigényes. Az emberi hiba mindig benne lesz a programokban, és mivel a GPU-s gyorsítást az APEX felületen keresztül külön kell engedélyezni, így talán előfordulhat, hogy ezt az opciót véletlen rosszul emelték át a programozók. Persze felmerül az újabb kérdés, hogy a profilozás folyamán miért nem vették észre, hogy nem fut a kód a GPU-n, hiszen alapvető szempont, hogy a program futását legalább egyszer – de inkább sokkal többször – érdemes áttekinteni, az esetleges problémák felderítése érdekében. Márpedig az AgPerMon profilozó jelzi a modul gyorsításának hiányát. Ezek alapján óhatatlanul felmerül az emberben a szándékosság, amivel az NVIDIA számára az egekbe tolt gépigény jelenti az üzletet. A CPU-s számítások nagyon megterhelik a rendszert, hiszen a ruhaszimuláció eleve nélkülöz mindenféle LOD-ot, ami visszafogná az erőforrásigényt. Sőt a grafikus processzor oldaláról is kedvező a hatás, hiszen a játékhoz nem egy, hanem több GeForce kártyát is lehet venni, sőt el lehet gondolkodni a dedikált gyorsító vásárlásán is. Természetesen az NVIDIA érdeke, hogy a számítógépben minél több GeForce kártya legyen, és ehhez a Mafia 2 korlátozott sebessége jó táptalajt biztosít. A megszorítások azt a kérdést is felvetik, hogy ilyen körülmények között mi szükség van a fizika GPU-s gyorsítására. Remélhetőleg az NVIDIA pozitívan áll majd a fejleményekhez, és ha már kiderült a hiba vagy turpisság – kinek hogy tetszik – javítják is azt.

Kiegészítés: A hír megjelenését követő napon az NVIDIA reagált a PhysXInfo elemzésére. A vállalat elmondta, hogy a GPU-s cloth gyorsítás csak akkor működik, ha a felhasználó dedikált GeForce kártyát használ a számításokra. A fenti működést tehát szándékosan alakították így a vállalat programozói. Az egyetlen kérdés már csak az, hogy miért kell azoknak a felhasználóknak is a CPU-s feldolgozásra építeni, akiknek csak egy GeForce kártyára futotta.

Azóta történt

Előzmények

Hirdetés