16. 5. 2013

Killzone: Shadow Fall - ľahká rozcvička pre PS4


Guerrila Games je súčasťou SONY rodiny od roku 2005 a až na jednu TPS akciu /!!/ Shellshock: Nam '67 pre PS2 je dlhé roky spajaná s univerzom hier Killzone. V histórií FPS hier je iba málo sérii, ktorá sa na výslní úspechu udržali tak dlho ako napríklad HALO. Majster Číf  bude nepochybne vládnúť xbotom v puberte aj na xcrape 720. COD značka hlási striedavo oblačno, aktuálne slnečno. Killzone sa už pekne dlho snaží dostať /a udržať/ medzi rešpektu hodnou elitou a že to nie je práve jednoduché, vidíme pri pohľade na kultúrne pamiatky DOOM a QUAKE, tam je teraz pod nulou a padá mrznúci dážď. Toľko úvod - GG sa totiž oficiálne pochválilo rozhodnutím pracovať na novom IP. PS4 hra s úplne iným zameraním ako Killzone. Môžme iba hádať o čo pôjde /šušká sa o akčnom RPG, osobne sa tiež prikláňam ku TPS akcii, tentoraz však nie vo vietname/.

KZ:SF demo. Moja prvá reakcia po zhliadnutí videa bola - technicky ide jednoznačne o port KZ3 PS3 enginu plus nejaké postefekt kravinky a lepšie svetlo vďaka vyššiemu ALU výkonu /to si ešte rozoberieme/. Čistá, pekna grafika. Vybrali si tunelovú úroveň v COD štýle, akcia nudná, po hernej stránke rozhodne nie som nadšený. Ako hru to však už viac teraz hodnotiť nebudem. GG povedalo, že pre prvú prezentáciu hry sa sústredili na kód, ktorým im nespadne /a bolo to tesne, ako neskôr priznali/ a bude bežať v stabilnom 1080p/30fps režime. To sa aj podarilo, demo je rock soolid 30fps, čo naznačuje vyšší priemerné framerate aspoň na úrovni 45fps a ku 60ke už nie je veľmi ďaleko. Padla otázka na koľko percent využitia PS4 to vidím v tomto konkrétnom prípade. Bez dlhých rečí - v žiadnom nie viac ako 50%. Potvrdzuje to aj GG v oficiálnom komentovanom postmortem dokumente z vývoja KZ:SF dema /je tam more pekných obrázkov, ak už nechcete lúskať tých vyše 100 slajov/, z ktorého vychádzam pri písaní môjho článku aj ja.


video patrí k tomu  postmortem dokumentu spomenutému vyššie

CPU.  GG sa nijako netají, že KZ: SF používa značné množstvo kódu z KZ3, tak ako som tipoval. Na PS3ke to však beží na CELL CPU, ktorý tam pracuje väčšinou ako druhé GPU. Čo s tým ? Poradíme si ľahko. CELL v prípade PS3 - to je 6xSPE /otroci/ + 1xPPE. /dirigent/. Túto metodiku preniesli aj na PS4, kde z jeho Jaguar CPU využívajú 6 HW threadov z 8 dostupných /nemáme podrobné informácie čo sa deje so zvyšnými dvoma/. Takže krkolomne napasovali SPE kód na Jaguara ? Nie tak celkom, v skutočnosti na PS4 CPU previedli svoj "SPE job" systém. Ide o doporučený spôsob kódovania programu nielen pre CELL architektúru. Spočíva v tom, že sa program /grafika, audio, AI, fyzika, herná logika/ rozdelí na mnoho "jobs" /desiatky, stovky/, ktoré obsadzujú voľné pracovné cykly SPE jednotiek. Nedá sa teda povedať, že jedna SPE maká na grafike, druhá na fyzike. A práve "jobs" motajúce sa po celom SPE poli sa im na PS4 CPU podarilo zreplikovať s veľkou rezervou.

vykonný CPU particle systém /častice sú interaktívne, prijímajú vrhaný tieň-svetlo, volumetrické ak treba/, mimochodom ten kolosálny výbuch ma iba 9200 častíc v 13 particle systémoch !! 

PS4 CPU v aktuálnom builde KZ:SF zvládne 60 AI panďulákov, 8200 fyzikálnych objektov /Havoc/, 500 časticových systémov. Častice bežia na CPU a ide o port kódu z PS3 /CELL/. Pikoška. Po aplikovaní základnej matemetiky na debug výstup obrázkov v ich dokumente - bežalo CPU v tomto PS4 SDK na 1.6 Ghz /špekulovalo sa o vyššej frekvencii 1.8-2.0Ghz, uvidíme ako na tom bude finálny dev kit dostupný v lete/.

RAM. Slajdy trochu pomýlili blbčeka z EG.net /DF/, ktorý kvákal, že KZ:SF demo využívalo 3 giga ram na grafiku. Je to trochu inak. Systémová RAM /herná logika, AI, fyzika, zvuk/ si zobrala 1536 mega, grafika 3072 mega, 128 mega je sdieľaných /ide de fakto o grafické display listy, to sú dáta, ktorými CPU riadi GPU/. Takže 1536+3072+128 = cca 4700 mega. Niečo tu nesedí. Prirátame ešte aspoň jedno giga pre PS4 OS v pozadi. To máme takmer 6 giga dát, ako to chceli dostať do pôvodnej 4 gigovej PS4 ?

Jednoducho. Jednak malo PS4 SDK určite minimálne 8 giga ram iba samo pre seba a pre PS4 to chceli trochu scvrknúť. Ako ? Nuž z tých 1.5 giga pre "systémovu časť" si 550 mega berie audio /viac ako ramka celej PS3 !!!/, 350 mega zas Havoc fyzika. Grafická šasť ram je ešte rozšafnejšia. Z 3 gigabajtov tu je 570 mega ako keška pre streaming textúr, zároveň je tu 1.3 giga nekešovaných a šialených 800 mega v rendertargetoch /"buffery" pre jednotlivé grafické efekty/. GG sa smeje, že tam maju stovky mega len tak rozhodených a musia si s tým ešte urobiť poriadok. .Pikoška - GG si pochvaľuje veľmi rýchly HDD, kladie však otázku aký sa vlastne bude nachádzať v samotnej PS4 a tvrdí, že priepustnosť GDDR5 je na hranici, a šetriť sa proste musí aj tu - ako si teda poradí xcrap so svojou sociálne pomalou DDR3 !! 

GPU. Podľa GG ide o veľmi dobré GPU, ktoré aj bez šialenej optimalizácie ala Killzone 3 - s ľahkosťou utiahla hrubo vyladené KZ:SF demo bez straty jediného frejmu. Konečne sa da používť branching /skoky-vetvenie, programovanie typické skôr pre CPU, pri bežnom GPU so značnou penalizáciou, na RSX nepoužiteľné/. V KZ: SF stále používajú svoj klasický deferred renderer z KZ3 /odôvodňujú to veľkým množstvom času a prachov do toho vrazeného na PS3ke/. Dnes však už ide o pomalý a prekonaný spôsob renderingu /do predu sa deru deriváty TBDR a TBFR, tile based deffered a forward rendering/. Vyšší hrubý výkon PS4 GPU /ALU, priepustnosť/ využili na implementáciu HDR a záplavy efektov /volumetrické "3D" svetla s rýchlym skateringom - rozptyl svetlo na čiastočkach "prachu, vodnej pary"/ a  postefektov /bokeh DOF - 170 samples, na PS3 dosiahnete v lepšom prípade tak okolo 16-25, motion blur, pseudo raytracované odrazy/. Najväčšou zmenou je prechod na nový shading model - physically based lighting /FBL/.

A to je tá skutočná novinka, a behom pár rokov sa stane nudným štandardnom úplne všade. Ak si pozriete na interiér nejakého premium auta z GT6 v štúdiovom svetle uvidíte neprirodzene sterilné, "suché" povrchy, uniformný lesk kože, matnosť plastov. Je to dané veľmi zjednodušením interakcie svetla a daného materiálu /všetko shaders, samozrejme/. GG hovorí, že časy, keď napríklad v KZ3 umiesťnovali grafici specular "odlesky" na scénu ručne /lebo lighting engine ich tam proste nevedel dať prirodzene podľa fyzikálnych zákonitostí/ - sú proste preč. FLB je veľmi, veľmi náročné na množstvo výpočtov na jeden pixel. Povedzme, že pri KZ1 to bolo 5 kalkulácii na pixel, pri KZ3 asi 100, pri KZ4 hovoríme o 1000 a 10K+ výpočtoch. Na to treba nesmierne veľký ALU /SIMD výkon pri GPU/ a tu je PS4 GPU minimálne 20 krát výkonnejšie /efektívnejšie/ ako PS3 GPU. FBL úžasne úľahčuje prácu grafikov, zrýchľuje a zlacňuje tvorby hry.

iba smiešnych 670k polys a 1700 drawcalls - to sú parametre lepšej PS3 hry

KZ:SF však zo sebou stále vlečie kopu KZ3 záťaže. Bežné modely postáv v KZ:SF maju v maxime 40 000 polygonov, 7 x LODs /40K-150 polys/, bežne 6x2x2K textúry na telo a 4K na hlavu a detail mapy. KZ3 - cca 10K polys na panduľáka, 3 x LODs, 1x1K texúry. Kľúčové slovo, ktoré si máte všimnúť je LOD - level od detail. Panduľák v KZ:SF teda ma 7 svojich variánt od 40 000 po 150 polygónov podľa vzdialenosti od vás. V čom je problém ? Nuž všetkých tých 7 variant jedného modelu musia byť prítomné naraz v pamäti. Ak máte na ploche 1000 objektov /stromy, auta, koše, čokoľvek/ s prislušnými LODs, tak máte v ramke desaťtisíce LOD modelov. Tento problém sa pokúša riešiť teselácia. V pamäti máte iba jeden model a GPU si komplikovaným shader algoritmom tie polygóny pridáva/uberá samo - je to komplexná téma, nejde o nič jednoduche, viac niekedy neskôr. Pikoška - Gran Turismo 6, narozdiel od KZ:SF panduľákov, používa pre modely aut novinku - adaptívnu teseláciu /hehe, ver mi, že tam ide o niečo iné, ale aj o tom bude reč/.
-------------------------------------------

Zhrnutie. KZ:SF je roztopašné cvičenie GG s novým HW. V hre je veľa HW a SW premenných. PS4 CPU bude vo finále na 1.6Ghz alebo nie, HDD bude rovnako rýchly, alebo pomalší, v zálohe je stále tých 8 giga GDDR5, ktoré nikto ešte k dispozií nemal. KZ:SF beži na upravenom kóde z KZ3. Nejde o natívnu aplikáciu, nepouživajú sa najmodernejšie postupy, aktuálny build je veľmi hrubo optimalizovaný, bez extra low level ladenia. GG hovorí, že nepoužili jediný compute shader na GPU /alebo GPU asm/, kdeže je využitie GPGPU /8xACE engine/ alebo bypass Onion zbernice. Čaká sa na finálny dev kit, na tom dnešnom nie je k dispozií dedikovaný čip pre audio, takže to odtiahlo CPU. Bezohľadu na to vyzerá KZ:SF výborne a hýbe sa úplne plynulo v 1080p rozlíšení . Na moju bradu vám prisahám, že pri kodovaní ako pri Killzone 3 by to KZ:SF demo bežalo bez mihnutia oka v 1080p/60fps/FXAA a to proste musí stačiť každému. Ešte tam tak dostať tu lepšiu hernú stránku.