Pošto se u Crysis 2 temi počela voditi rasprava o nvida PhysX tehnologij, odlučio sam da nezagadujem temu offtopicom, otvoriti novu temu. U temi bih nastavio raspravu koja se prvenstveno vodila sa dado8 forumašem, ali i sa drugim forumašima.
Pošto sam nisam ozbiljnije radio sa nikakvim fizikalnim izračunima, kako na CPU, tako ni na GPU (jedino što imam iskustva su osnove DX-a i to fixni pipeline), odlučio sam se obratiti kolegi forumašu LevaOpaki, koji radi kao game developer, te je radio sa nvidia PhysX-om, te je na moju zamolbu odgovorio na par pitanja koje muče mene a i vjerujem hrpu ostalih korisnika. Pa da krenemo, c/p razgovora;
A:"posto sam na godisnjem ovaj tjedan bit cu malo kraci :) procitao sam topic prije par dana pa ne znam u kojem je smjeru otisao ali vidim da vecina ljudi uopce nema pojma sto je physx pa onda valjaju neke bjesne pretpostavke kao npr. da nvidia placa developerima da koriste taj api :) lol. ljudi svasta izmisle samo da opravadaju neke svoje pretpostavke/mrznju prema nekome ili necemu. u ovom slucaju je to nvidia koja je na piku vec neko vrijeme. uglavnom physx je api koji omogucava simuliranje fizike. to je ogromna biblioteka koja je vec razvijana jedno desetljece. to je toliko ogroman i zahtjevan posao tako da je tesko uopce razviti tako nesto u nekim realnim okvirima. physx je kompletna fizika kao i npr. havok."
A:"pa s obzirom da je physx kao api besplatan za razvoj na samoj pc platformi a prilicno je zreo i stabilan api, nije ni cudo da se koristi kod vecine developera. a da se placa developerima da koriste taj api je nebuloza da ne moze biti veca. dapace, ako se isti api koristi za neki naslov za konzole kao ps3, mora se platiti licenca nvidia-i isto kao sto se placa za havok. znaci nema nikakve razlike. to je "slucajno" da nvidia drzi pravo na taj fiziki lib. pa sto intel je nedavno kupio havok i isto lite verziju daje besplatno dok puna verzija kosta kao i physx. uglavnom, osim sto je physx besplatan za pc, vrlo zreo testiran i brz api za fizikalne simulacije on takoder podrzava, kao bonus, akceleraciju putem gpu."
Q:Imaš što protiv da c/p ovo u temu ?
A:"nema problema da pejstas, ali samo da dovrsim do kraja ;)"
A: "e sada, physx je prije svega bio cisti simulacijska biblioteka koja se vrtila na CPU primarno i danas je to prije svega. stovise, neke primitive se uppce ne akceleriraju na gpu. gpu se koristi za neke specificne stvari. primarno sumulaciju cestica od kojih su napravljeni i fluidi. ili cloth simulacija. za njih je gpu simulacija savrsena. ali physx primarno podrzava single core i multicore cpu i sto je najbitnije niti ne moze funkcionirati bez cpu-a :) i cak kad je gpu akceleracija ukljucena, vecina toga se i dalje racuna na cpu. znaci developer samo moze povecati broj stvari na sceni specificnih za gpu da bi poboljsao dozivljaj jer cpu to sam ne moze prozvakati, pogotovo ako pogoni graficki dirver, ai i gameplay. ali sve to se moze izvrisiti i na cpu ali puno sporije. ali to je jasno iz aviona ako se pogleda sirova snaga jednog jako cpu i gpu. gpu moze biti i 300x puta jaci za te izracune."
"tako da, unreal engine 3 je kao primarni fizikalni engine/collision system odabrao novodex/physx i to prije nego je nvidia nadostrikao gpu akceleraciju u api. u api se moze tocno reci koliko thredova da se koristi, koji thread da se stavi na koju jezgru, dal da se gpu akceleracija uopce koristi itd itd. svi smo igrali UT2007 bez gpu akcelercije i letio je ko zmaj. poslije kad im je dosla gpu akceleracija onda su gledali sto mogu poboljsati s njom i kako poboljsati dozivljaj, ali su i sami shvatili da se ne isplati raditi nesto svoje i izgubiti hrpe godina i novca. recimo cryengine fizika se po mogucnostima jos ne moze boriti sa mogucnostima physxa."
"a i samo oni mogu naci dovoljno developera da usput rade nesto svoje. no ako cemo iskreno, cryengine 1 je koristio preradeni ODE engine i vjerojatno je on jos uvijek ostavljen kao neki temelj samo je toliko izmjenjen da ga vise ne zovu tako. meni se physx api isto svidao i prije nego ga je nvidia otkupila i primarno sam ga gledao kao brzi simulacijski engine. nvidia bi bila luda da ne ubaci suport za gpu akceleraciju. na kraju krajeva i havok ga vec neko vrijeme najavljuje pa jos uvijek nista konrektno. tako da nema razloga da ga neki developer odabere ako mu mogucnosti valjaju, brz je, dobar support, redovna nadogradnja, pc verzija je besplatna i jos se badava dobije gpu akceleracija da se u igru moze ugurati koji komad vise da frcne kod explozije, gusce clothove, koji fluid ili softbody."
"ne vidim sto je uopce sporno i zasto netko ne bi odabrao taj isti api. ja ga osobono koristim i jako sam zadovoljan. uglavnom, nikakav openCL nece zamjeniti physx jer je to dubre od api-a u razvoju preko 10 godina. opencl je samo jezik za gpgpu programiranje ali napraviti fizicki engine i akceleraciju preko njega su potrebne godine i zasto bi se izmisljala topla voda kad nesto tako vec postoji. to jedino da se ms odluci za tako nesto, no to cemo ugledati tek mozda za 5 godina. cak je to ms najavio da dx11 pa su vjerojatno brzo odustali kad su vidjeli koji je to posao."
"eto mislim da sam pokrio sve. nezgodno je sto bi svasta htio reci na tu temu pa sam svuda sarao no ne znam dal sam postigao bit koju sam htio. no physx je super api i besplatan je za pc pa ne vidim razlog da ge netko ne odabere. da koristi samo gpu akceleraciju vjerojatno ne bi bio ni upola popularan. ali to je primarno cpu engine koji neke djelove moze vrtiti na gpu i to je samo plus. svi probaju vecinu gotovih fizickih enginea i na kraju donesu oduku sto da koriste ali me osobno uopce ne cudi da netko odabere upravo taj api. meni je osobno sjeo nakon sto sam probao jedno 5 razlicitih api-a i, nekome mozda uopce ne odgovara interface pa ipak odabere nesto drugo. sasvim prihvatljivo. ali je isto tako smjesno reci da oni koju su odabrali taj api potplaceni. isto se moze reci onda i za sve havok korisnike jer je intel sada vlasnik havoka."
Q: A sada ono naj nejasnije, zašto u praksi dolazi do usporavanja kada recimo u nekoj igri (Bathman AA, Mafija 2) ukljucim PhysX, framerate pada u pola.
Sve se izvodi na jednoj solidnoj, GTX 260 OC kartici.
A: "da do usporenja dode zato sto se dio kartice koji se inace koristi za grafiku sada koristi i za fiziku. kartica ima odredeni broj unificiranih jezgri. one rade operacije nad vertexima i pixelima koji su obicni vektori. znaci kartica sama rasporedi posao po jezgrama tako da ih par procesira vertex shader programe, par pixel shader a par open cl. ono rasporeduje poslove. i sada ako je gpu akcelaracija fizike ukljucena, kartica ne moze izmisliti nove CUDA jezgre. nego ce progutati odredeni dio snage kartice. fizika ne koristi neki novi dio gpu.a nego upravo te iste shaderske jedinice. tako da je logicno da ce ti opasti snaga za procesiranje grafike. slicno ko kad upalis klimu na autu sa malo konja :) da bi ostavioo viska snage na grafickoj za nesto drugo moras smanjiti detalje ili nabaviti jos jedan gpu. to se mozda ne preporuca ali ako imas neki stari zasto bi ga bacio kad ga moze u nekim igrama upotrijebiti za nesto."
ili sa jakom novom grafickom vrtis stariju igru pa se graficka hladi pa ukljucis i gpu simulaciju. ali gpu je sada unificiran i izvrsavat ce programe koje mu das. bio to vertex shader ili pixel ili open cl/cuda program. njoj je svejedno. izvrsava sto joj das, ali nemoj se zaliti ako upalis 3D studio max da renda nesto na CPU sto ti arhiviranje u winraru ide sporo :)"
To je c/p razgovora, a cilj bi teme bio generalna rasprava o ovoj tehnologij u ovom smjer ;). S obzirom da ni meni nije bilo baš sasvim jasno, a i velikojv vecini ostalih, odlucio sam pokrenuti temu da se vodi rasprava o ovoj tehnologij.