21. 2. 2011

Brownov pohyb

Dnes je všeobecným faktom, že bez asistencie SPE jednotiek by sme sa kvalitnej grafiky /týka sa to hlavne natívnych hier/ na PS3ke nikdy nedočkali. Do očí bijúci progres v AI, simulácii, fyzike zametám pod koberec, trh to nepožaduje /stále "im" stačia desaťročia nemenné nintendo kraviny z roku nula-dva, niečo akčné - Doom klon, a Dance kraviny pre americké tlustoprdky/, a vývojári sa sami od seba nepretrhnú. Takže si ďalej leštia tie svoje hovienka. Grafika. CELL už dokázal, že nielen v tomto atribúte xcrap GPU bez slôv zosmiešni. Kedykoľvek. Nie náhodou sú všetky PS3 FPS hry /Killzone, Resistance, MAG/ v režime 720p + AA. Zatiaľ sa to nepodarilo ani jednej HALO hre /všetky subHD, a bez AA/. CELL exceluje v spracovaní polygónov, hlavne v ich odstraňovaní /skryté, prekryvajúce sa, mimo zorného poľa/ a ich následný presun na časti obrazu, ktoré vidíme my ako hráči. Práca s svetlom je kapitola sama o sebe /defered, inferred, prelighting postupy/. Extremne silný je však aj v skupine tzv. postefektov, alebo "filmových" vylepšení: depth of field, objektový a kamerový motion blur, efekty kamerovej čočky, pochopiteľne antialiasing. Každý z nich je možné pomocou CELLu urobiť o rád, alebo o niekoľko tried lepšie, než s pomocou GPU /RSX, Xenos/.



Killzone 2 - začíname s "filmovovou grafikou" v hrách

Príklad: motion blur v KZ2 je rátaný s presnosťou-jemnosťou 8 vzoriek-samples pomocou RSX, ale dosiahlo sa až 36 samplex, keď to šmarili na SPE. Identické výsledky dosiahol iný tím v hre Star Wars: Unleashed 2. Xenos nemal sebemenšej šance, CELL žiaril. V hre Blur od nebožtíkov z Bizarre zvládal ich engine výrazne vyšší počet svetelných zdrojov práve v CELL-PS3 verzii. Všetky tieto CELL vymoženosti však pri multiplatformových hrach ležia v prachu. Musí byť zachovaná parita medzi verziami, a PS3 musí byť zákonite horšia, lebo prachy treba šetriť. Ten PS3 port urobí B-tím a vedúcou verziou musí byť naďalej ďaleko menej výkonný xšmejd. Ako veľmi nevýkonný vám ukážem na tomto príklade.

Existuje isté pdfko s názvom "Ako dosiahnúť 60fps na Unreal engine". Týka sa hry Mortal kombat vs Dc universe. Aby to na tých 60 fps dotiahli bol engine takmer kompletne prepracovaný. Unreal 3.x je ako vieme impotentný čurák /presne v tomto zmysle slova, žiadne metafory/. Prekočím kopu blafov. Pasáž particle Fx z toho pdfka vám ale zaujímať bude. Maličká teória. Tí čo už niečo modelovali v 3D editoroch /3DS Max/ vedia čo bude následovať. Časticové systémy /správny nazov/ totiž zahŕňajú celú plejádu fenoménov - oheň, explózie, dym, dokonca aj pohybujúcu sa vodu /niekedy/, iskry, padajúce listy, tráva odskakujúca z pod kolies, mraky, hmla, sneh, dážď, srsť, vlasy, a všetky tie magické bludy a žiarivé stopy. Ak sa vám na frame natrepe viacero systémov naraz a vo variacerých kusov z jedného systému máte na stole zásadné výkonové problémy.

Štandardne beží spracovanie časticového systému asi takto : generovanie-emisia-emitor je bežne CPU, simulácia pohyb častíc, kalkulácie ich interakcií, určenie dĺžky života častice stále CPU, rendering GPU. Partikle prítomné vo veľkom počete sú teda extremne náročné na výkon CPU/GPU a spojenie medzi nimi. Predstavte si, že v FPS hre strelíte do steny, objavia sa iskry. Čo s nimi ?

Najprv nám celkový "časový budget" oreže ich počet, potom sa budete snažiť aby ich život netrval príliš dlho /každa vyradená-"zhasnutá" častica šetrí CPU-GPU/, ak sa jej podarí dopadnúť za zem môžme ju nechať zmiznúť, alebo rátame s jej odrazmi /CPU kričí preboha !!/. Čím viac tých častíc a ich odrazov /bounce/ si môžme dovoliť tým sme väčší frajeri. Je veľmi náročné pre systém sledovať každú z tých skakajúcich iskričiek, ráta sa doslova každý frejm. Malé porovnanie. V Killzone 2 ich starý a tvrdo neefektívny particle SPE engine zvládol sledovať 300 !! časticových systémov na frame a 200-300 kolízii častíc priamo na hracej ploche, nejde o umelý syntetický benchmark. Aby vás to lepšie udrelo do očí. HALo 3 engine zvládol 7 /slovom: sedem/ interakcií per frame. Obe kalkulácie boli riadené via CPU. CELL vs Xenon. Pripomínam toho vylízanca Carmack, ktorý povedal, že medzi PS3 a xcrapom - on po stránke výkonu nevidí rozdielu. Opakovane usvedčený klamár.

OK. Späť na trať. To Unreal pdf a Mortal Kombat na 60 fps. Úprimne bol dev tím zhrozený nad zastaralosťou enginu a veľké starosti im robila práve implementácia časticových systémov. Ako už teraz viete, nejde len o tie iskričky. Práve na tomto príklade vám ukážem, že tú hru /a iné/ proste musíte vyvíjať primárne pre xcrap. Ten šmejd sa im totiž v ich testoch pekne vyfarbil. Bez ohľadu na stupeň optimalizácie sa nevedel vyrovnať SPE verzii. Konkrétne. Keď na SPE particle engine hodili 20 !! násobok toho čo zvládol bill šmejd - stále nedochádzalo ku plnej satarácii a vyťaženiu SPE jednotiek. Hrubo orientačne vám poviem, že dnešná veľmi dobre napísaná hra pre xcrap /GPU emitor častic, GPU kalkulácie interakcií/ by mala zvládnuť okolo 3000 plne simulovaných častic s odrazmi na frame. SPE verzia ich zmákne 60 000. Ako bombasticky by asi potom tá hra vyzerala sa však nikdy nedozvieme.

Vychutnať si to môžte iba na herne hnusných 6/10 - 7/10 hrách ako Killzone 3, Motostorm 3, Infamous 2, Uncharted 3, ICO 3, GT5 a ďalšie. Tam dostanete kvantum tých efektov v najvyššej možnej kvalite a všetky naraz v 720p rozlíšení s antialiasingom. Video. Killzone 2 vs Gears of Joke 2 - všimnite si výrazne väčší počet iskier po zásahu steny, dĺžku života častice, a bounce-odrazy častíc, interakcia pri KZ2. Gears 2 padol na hubu /nekomentujem kvázi procedurarálne volumetrické particle smoke efekty po dopade guľky v KZ2/. Pri výbuchu granátu dokonca vidim 3 x bounce častice pri KZ2, veľká nula pri Gears 2 /extra náročné na CPU/. Na nadchádzajúcej GDC 2011 má mať GG a Bungie prednášky venovanému práve aj svojim novým "časticovým" algoritmom. Naše oči sa však nedajú oklamať. KZ3 je "časticové" peklo v pravom 720p + MLAA. SubHD/zero AA - HALO Reach túto technickú virtuozitu nikdy nedosiahlo. Video. HALo 3 vs HALO Reach /starý CPU vs nový GPU časticový kód/.