12 Jan 2021

Grand Theft Auto

Predajný úspech GTA 5 je lákavý ako zlato na Klondiku. Návod na úspech pritom na prvý pohľad nie je zvlášť komplikovaný. Hru zjavne definuje hlavne prítomnosť a používanie všetkých možných typov transportných vehiklov. Autá. Civilné, športové, závodné, retro aj úplné novinky. Sedany, kabriolety, SUV, off-roady, dodávky. Odťahovka, vysokozdvižný vozík, kosačka na trávu s posedom, buldozér. Sanitka, autobus, hasičské auto, tank. Motorky. Skútre, čopre, kapotované nanuky. Golfový vozík. Bicykle. BMX aj cestné žiletky. Vodné skútre, rýchle motorové člny alebo s plachtami. Mini-ponorka. Stíhačka, práškovací dvojplošník, hydroplán, helikoptéra, vzducholoď. A môžte si zaplachtiť aj s padákom. Pešo to chce viac zábavnejšie ninja traverzovanie než tam majú teraz, lebo strielať blbú AI zas až tak nebaví. Najčastejšie hopkáte z jedného pohybovadla na druhé a po ceste zrážate veci a ľudí. Základ GTA žánru /a mal by byť fundamentálne prítomný v každej hre tohto typu/ je extrémna variabilita v mobilite, kaskadérske kúsky, rozbíjanie kandelábrov, benzínových staníc, terorizovanie občanov a policajné naháňačky. Všetko to, čo chcete urobiť pri ceste domov z práce.

 

Ak všetko vyššie spomenuté zredukujem na jedného koňa, laso a kolt, tak mám vcelku problém. Červená niť, ktorá ide hrou RDR 2 hovorí, že je to veľmi pekná hra ale ťažko tam hľadať 100+ hodín košatej zábavy pri voľnom pohybe po mape. RDR 2 nikdy nepredá 150 mega. Čislo, ku ktorému sa GTA 5 s PS5/XSX-XSS verziami pomaly dopracuje /GTA MP tiež ponúka o rád viac možností ako spotený online kovboj/. V GTA sa na koňovi, či inom dobytku nejazdí a lasom nehádže. Koň v RDR2 je váš hlavný /praktický jediný/ dopravný prostriedok a jeho herná mechanika by musela byť na absolútnej úrovni, detto fyzika toho lasa aby to herne utiahlo celú hru. Všetko tie kovbojské parády musia byť výnimočne dobre herne zvládnuté a veľmi zábavné. Doslova auntentické. Samozrejme, že ide o hru, takže tým lasom budeme chytať aj komíny vlakov, šplhať na stromy a vešať sa na tom ako pavúk na vlastnom vlákne. Ak hľadáte ducha západu, inšpiráciu, potom kniha Monte Walsh pri plameni sviečky.

Ostatní. Viem si okamžite predstaviť, čo herne ponúkne akýkoľvek GTA klon /hru na zemi, vo vzduchu, pod vodou/. Už vieme, že Cyberpunk 2077 klamal telom a overenú GTA hrateľnosť v defaulte určite neponúka. Na RDR 2 som pozeral od začiatku s veľkými pochybnosťami. Iba koň, laso a kolt. Museli by to byť herní bohovia, aby to stačilo na celú hru. Nemyslím si, že svoju úlohu splnili dobre. Infamous. Dobrovoľné rozhodnutie nedať herný dizajn ala GTA ale skôr ako na toho Spidermana. Rýchly parkour po strechách a mimo nich. Spiderman nepotrebuje sedieť v aute, ponorke, lietadle a hra aj tak ide na dračku. Infamous však prepadol. Jedným z rozdielov medzi nimi je, že Spiderman /Batman, iný "man"/ má supermanský sentiment, ikonickú auru svojho hlavného hrdinu/záporákov a v tom zanikne, že tam niet inej hrateľnosti, než má aj ten Infamous.

Ideálna akčná sandbox hra sa teda buduje na univerzálnych základoch GTA, ktoré už treba posunúť ďalej v oblasti AI a fyziky /interakcie/, nech to nie je iba o zahltení hráča kvantitou veci s kolesami a vrtuľami. Ak je tej jadrovej hrateľnosti pomenej /western - niečo s pištoľkou, staré grécko - s mečom, vikingovia - so sekyrou/ je vhodný odpich aspoň ľahkým RPG smerom a mocná charizma herných postáv. Arnieho barbar Conan to utiahne, niečo no-name v Assassin Valhalla skôr nie. Geralt z Rivie to zmákne, aj keď je boják plytký, chabý a koň behá cesty na autopilota. Generický Deacon St. John alias Deek zaboduje o 500% pomenej. Mimochodom je to hrdina hry Days Gone. A jazdu na motorke tam pochválili, vraj je ten pocit z jazdy na nej autenticky, hybnosť, prenos hmotnosti. Niekto to dobre poladil.

SONY asi bude pokračovať s Days Gone ďalej - základ je slušný, chce to trochu viac vehiklov, nejaká stará bublinová koptéra, zombie horda ver.2, lepšiu chémiu postáv, zabiť Deeka, ktorý to tam hraje ako NPC a najať Washingtona. Horizon Zero Dawn - hneď na prvej fotke bol lietajúci pterodaktyl, hra však neumožňuje sedlať lietajúce stroje. Nepochopiteľné fiasko. AI zlepšiť masívne, detto všetky bojové postupy. Elementály ohňa/vody/vzduchu tam musia deštruktívne burácať po krajine. Musí to byť armagedon. Asi až na PS5ke s tretím dielom. Spiderman - vážne neviem. Stále v tom istom New Yorku. Vidím to ako s tou RDR2 /inak 20 nahodných kliknutí sa rovná 18 krát enginovka a 2 krát neohrabaná gunplay/. V čiste PS5 pokračovaní musia niečo urobiť s fyzikou/interakciou a davovou AI. Herná scéna musí žiť, ako keď sa kuna dostane do kurína. A na Just Cause som nezabudol, bude mať drop-in kooperatívnu kampaň a viac telies v pohybe ako šutrov v páse asteroidov.

-----------------------------------

Všetko kecy. Nie je to o jazde po chodníkoch a o dôchodcoch čo skáču po hlave únikovú robinzonádu. Grand Theft Auto má byť o planovaní a exekúcií zločinu, kde sa následne uteká z miesta činu a zahladzujú sa stopy. Alebo sa skupina čo uteká delí na dve polovice, alebo ešte menšie skupinky a používa techniku volavky. Alebo vyhodí prachy pod mostom a potom sa po ne vrátia. Alebo ich skryje tam, kde ich aj ukradli. Policajné AI musí byť perfektné, ak majú mať nahánačky nejaký zmysel, pocit hrozby, klimax, satisfakciu, keď sa zadarí vtipne utiecť. Policajná AI musí byť perfektná aj v interiéroch. Horolezci hovoria o "útoku" na horu. Misia v banke nemá byť bezduchá strielačka s útekom na aute, kde to "úspešne" skončí, keď zastanem na určenom mieste X a polícia sa následne programovo vyparí. Nie. Policajti ma majú čakať pred barákom a keď míňam veľa prachov na kurvy, drogy, ferrari a domčeky s bazénom nad mestom, tak mám cítiť FBI sledovačku za krkom. Rus lieta stíhačkou ku hraniciam EU a testuje kvantitu a kvalitu reakciu. V dnešnej mizerií behom prvej misie prečítam celú tu ich slávnu AI a do konca hry je to sranda ako šachy s chudákom s downovým syndrómom. GTA je vlastne stále ta istá triviálna automatovka ako z roku 1989.

8 Jan 2021

Detroit: "Become PC"

David Cage - šéf Quantic Dream /QD/, ktorého poslednou hrou je dobre prijatý Detroit: Become Human /2018/, najnovšie povedal, že ich next gen projekt bude bežať na fungel novom 3D engine. Zdanlivo banálne prehlásenie. A aby som vás dostal trochu do obrazu, tak na PS3ke išli pri renderingu v ťažkotonážnom deferred štýle, lebo tak to vyhovovalo systému postavenom okolo SPE jednotiek so slabým GPU. Pri hre Detroit došlo ku fundamentálnej zmene na forward rendering. Nemusia vás trápiť detaily, ale ide o niečo v jadre veľmi dramaticky odlišné. PS5 je v úplne inej galaxii. Ponúka možnosti ako je plne programovateľná geometrická časť pipelajny /naposledy na PS2ke/, ide o novú paradigmu. Môžte si sami definovať vlastnú softvérovu rasterizáciu mimo fixného GPU HW /naposledy s Pentium a Quake 1 bez "3D" podpory/ a samotný HW PS5 GPU je upravený ad absurdum vo veciach, ktoré PC rieši neurvalým a silovým 300+ watt spôsobom. Podľa mňa budú v QD sedieť minimálne 2 roky na zadku aby ten zázrak zlepili dokopy. Myslím 2 roky čistej práce len na novom 3D engine. Nasleduje zopár motivačných slov ako "ľahko" sa na PC portuje hru z biedneho "notebook" HW PS4ky. 

 
Kara tech demo pre PS3 /GDC 2012/ - koncept video budúcej hry Detroit

Na porte hry Detroit: Become Human pre PC začali pracovať už pár týždňov potom, ako bola hotová PS4 verzia. Práca trvala 18 mesiacov aj s intenzívnou pomocou zo strany AMD. Určite si poviete, prečo tak nelogicky strašná, časová náročnosť, keď ide o banálny prenos hry z jednej AMD platformy na druhú. Dev tím tvrdí, že hra vznikala od začiatku primárne pre PS4 a nepredpokladala sa konverzia pre iné mašiny. Ukázalo sa, že natívne PS4 API so špeciálnymi extenziami a low level prístupom ku HW  je pre PC celkom veľký problém. DirectX alebo OpenGL boli možnosťami ďaleko pozadu. PS4 API odkrývalo funkcie GP, o akých sa PC s DirectX ani len nesnívalo.

Herný engine napríklad super intenzívne využíva možnosti nového, moderného "bindless resources". Je to model odlišný od štandardného "sparse resources" alias brute force prístup. Táto funkcia hovorí o voľnosti prístupu GPU ku dátam, ktoré potrebuje na výstavbu scény. Vyžaduje expozíciu funkcií v GPU skrze API, ktoré proste pri DX11 alebo OpenGL neboli dostupné a výkon 3D enginu pod nimi bol tragický a značne CPU zaťažujúci /CPU je hlava a GPU je krk/. Voľba teda išla smerom DX12 a Vulkan. A pretože Vulkan na rozdiel od DX12 podporoval aj staršie Win7/8 išlo sa jeho smerom.

Rozdiel medzi API ako DX11/12, OpenGL, Vulkan a PS4 /GNM, GNMX/ je hlavne v tom, že ovládače grafickej karty napríklad pri DX11 pred programátorom zakrývajú všetku "magickú" prácu za oponou /neriešite manažment umiestnenia dát v pamäti alebo implementáciu shader kešky, antialiasing, samplovanie textúr/. Je nemožné získať 25-50% výkonu navyše tu a tam ručnou optimalizáciou. S PS4 to je možné na tej najnižšej možnej expertnej úrovni. Vulkan je niekde v strede.

CPU PS4 je anemický Jaguar, na rozdiel od PC má však oveľa rýchlejší prístup ku HW /GPU, pamäť/ a počet "draw calls" /draw calls = objednávka od CPU smerom na GPU - koľko a aké objekty má GPU vykresliť/ je výrazne vyšší ako pri porovnateľnom PC CPU. PS4 CPU ide o 100% nad svoju výkonnostnú úroveň. Jednou z ďalších maličkostí, je možnosť kompilovania shader kódu pre PS4 GPU v off-line režime, lebo poznáte cieľový HW. Pri PC sa to musí robiť priamo počas behu hru, lebo neviete, ktoré GPU alebo jeho verziu ovládača tam akurát máte. Pri Detroite dostali PS4 grafici voľnú ruku a vyprodukovali šialené množstvo vertex/pixel shader kódu a dev tím už tušil, že nielen tu pri porte dosť narazí.

Ukážka aký je problém pracovať s "dynamickým" PC.  Na pracovnej PC stanici cez celú noc off-line ako na PS4ke skompilovali shader kešku, aby ráno progišom šetrili čas. Veľmi si však nepomohli, lebo "málo" robustný ovládač tu musel počas dňa neustále prekladať do natívneho GPU asemblera a to sa neobišlo bez cukatúr a "sekania". V tomto bode ich testy ukázali, že Vulkan funguje oveľa lepšie ako OpenGL. Je to preto, lebo Vulkan nepoužíva bežný vyšší programovaci jazyk HLSL ale iný binárny "medzijazyk" prekladač SPIR-V. Dôvod prečo je hra Detroit tak citlivá a zdĺhavá pri kompiláciu shader kódu je ten, že rendering nebeží v masovo používanom deferred móde ale v zriedkavejšom clustered forward režime, takže materiálové shaders v sebe zároveň obsahujú aj celý nasvetľovací algoritmus /pri deferred je oddelený/ a každý shader sa takto stáva malým inviduálnym kolosom. Náhodný príklad rýchlosti kompilácie: na AMD Threadripper s 64 x HW vláknom trvala istá operácia 2 minúty, na low-end PC podľa špecifikácie hry však až 20 minút. Problém, na ktorom sa tvrdo pracovalo a optimalizovalo. Detroit môže mať v jednom frejme až 4000 textúr a proporčne tomu aj zodpovedajúci počet shaders.
 
Došlo vlastne ku obratenému garde. Keď ste chceli niekedy dostať nejakú hry z high-end mašiny na opačný výkonnostný koniec, museli ste najsť kopu skratiek aby ste slabšiemu CPU/GPU pomohli. Detroit robil to isté v prospech PC, aby port nevyžadoval CPU/GPU "nepríjemne" mnohonásobne silnejšie ako má PS4. PC Detroit PC port používa triple-buffering, delta kompresiu pohybových vektorov roztiahnutých na štyri frejmy v zásobniku aby znižil tlak na GPU a CPU. Nič z toho na PS4ke nie je nutné. Pri PC to však znížilo objem dát ktoré behajú hore a dole o viac ako jeden rád. Nezabudnite, že PC nemá unifikovaná paäť a zbernice nie sú nijako zázračne rýchle. V hre Detroit teda Intel CPU 4 jadro s Nv 1060 stačí v rozlíšení 1080p nakoniec iba na stabilných, synchronizovaných 30fps, presne ako tá PS4. NV 1060ka je však GPU o trošku /flops/ výkonnejšie ako to v PS4 Pro a teda je minimálne 2 krát tak dobré ako GPU v základnej PS4 !!
 
Rozdiel vo vnútornej architektúre GPU pri AMD triedy GCN, RDNA, RDNA2 je na mnohých kritických  miestach úplne zásadný /rozumej pri PC porte narazila kosa na kameň/ a PS4 aj keď z rodiny GCN má množstvo úprav, ktoré nájdete až pri o generáciu alebo dve mladších GPU, API. Pri PC porte však musíte pokryť úplne všetko. Staré, aj mladé, pomalé aj rýchle. Detroit je na PS4ke 1080p/30fps úplne zámerne. Dev tím vedel, že v engine hry bude lietať obrovské množstvo dát a engine sa ušil presne na mieru superýchleho PS4 API a špeciálnych PS4 GPU extenzií. Opäť sa teda pripomenul starý výrok John D. Carmacka z iD software, že ak sa pozeráte na konzolu, nejakú jej špičkovú hru, tak si v duchu vynásobte každý HW parameter tej konzoly dvakrát, aby ste si to na tom PC zahrali aspoň v rovnakej kvalite. Pre PS5 bude platiť to isté. Dnešná veľmi slušná zostava s 8 jadrovým Ryzen, 16 giga RAM a AMD 5700XT vám na ďalších 7 rokov stačiť nebude. A hyperrýchle IOP/SSD PS5ky dokonca ešte dnes bežne na PC trhu ani nie je !!

6 Jan 2021

Komentované herné správy - 6.1.2021

"Quake 2 pre PS1". Konverziu zo skupiny tzv. "nemožných" urobila firma HammerHead, vtedy 21 členný tím z UK. Vznikli odštiepením z Traveller's Tales v 1994 a tam sa pravdepodobne v tichosti o cca 10 rokov aj po zániku vrátili. V 1997 pod Psygnosis ako vydavateľom produkovali svojú prvú hru Shadow Master /najviac mi to pripomína Forsaken/. V ozbrojenej bugine beháte po leveloch a dobre si pamätám obludky čo sa efektne rozpadali na stovky trojuholníkov po zásahu a kopu dynamických svetiel. Bezvýznamná budgetovka. Quake 2 už bola seriózna práca a zadavateľ Activision na nich tvrdo dupal. Pracovalo sa 12 hodín denne celých 12 mesiacov. Hra na PS1ke beží v rozlíšení 512x240 pixel na 30 fps a má unikátny split screen režim pre 2 až 4 hráčov. Prvý nástrel enginu vychádzal z Shadow Master kódu a skôr sa podobal na lepší DOOM. Skončil však v koši a išlo sa od nuly. Ten rok času, ktorý dostali teda len tak tak stačil na holé prevedenie singel player kampane z PC, neostal žiaden čas na extra levely alebo nejakú prácu s splitscreenom /kooperatívne misie/, čo dodnes ľutujú. Samotná konverzia na PS1 nebola príliš problematická /mínus tlak pri menšej RAM/. Kritické časti renderingu sa robili v super optimalizovanom ručnom asm kóde, nie v céčku, nejaké špeciálne rutinky pre culling scény a samotný HW PS1 mal podľa nich dostatočný hrubý 3D výkon. Pentium 90 v softvérom režime v Quake 2 je inak úplne bez šance. A vieme o istých snahách dostať na PS1 aj Unreal engine /hru/.

"Ikea a nábytok pre PS5." Všeobecne známy fakt, že PlayStation 5 a Xbox Series X sú dizajnérsky hnusné a hlavne neohrabane veľké konzoly neunikol ani firme Ingvar Kamprad Elmtaryd Agunnaryd. Prvé dve slová nesú meno zakladateľa. Elmtaryd je farma, kde majiteľ spoločnosti vyrastal a Agunnaryd mesto v ktorom sa firma nachádzala /wiki/. Od dnes teda po ich predajňach, Ikea myslí na všetko, môžte behať s papundekľovými krabicami v tvare, farbe a rozmeroch oboch konzol a skúšať či vám titáni od MS a SONY vôjdu do ich výrobkov. Všimnite si popis na PS5 krabici.

 
 Lego City versus Cyberpunk 2077

"Cyberpunk 2077 - finálny verdikt pracujúceho ľudu."  Potom ako sa vzduch vyčistil a zakalené voda vyčírili je jasné, že slová mudrca o tom, že Lego sandbox hry /kooperatívny splitscreen v misiách !!/  mr*ajú celý AAA mainstream do ľavého ucha - sú pravdivé. Cyberpunk 2077 je ľahko priemerné FPS RPG. Dobre čítate - FPS RPG. To je jadrová herná "rambo" mechanika. Nie je to GTA, nikdy nebolo, nie je tam AI, nie je to cyberpunk, ani stealth hra, aj tie RPG fičúry sú iba tak nedbalo nahodené a so zlým balancom zhoršujúcim sa s bežiacim časom. Celá hra sa dala a mala urobiť ako Deus Ex alebo Souls gamesy, teda skôr lineárnejšie a s HUB systémom. Na skutočný GTA sandbox Cyberpunk 2077 s AI, stealth a kvalitnou RPG potrebovali ešte ďalší rok práce. Myslím si, že "hlavný" poľský akcionár išiel tvrdo po prachoch a kvalita išla cez palubu s plným vedomím všetkých zúčastnených.

"Subnautica". Po predchádzajúcom hernom fiasku musím ako eticky zorientovaný a konštruktívny kritik navrhnúť príklad lepšej hry. A more je survival "sand" box už z princípu. V subnautike teda naháňate malú rybku a zbierate koraly. Potom "úplne náhodou" zamieriť do temnoty hĺbky cez okraj podmorského útesu aby ste zistili ako to vyzerá v žalúdku 100 metrovej obludy. V obrovských jaskyniach sa plášť vášho plavidla bortí pod tlakom vody, lebo ste zabudli sledovať merak hĺbky, v ďalšej sekunde pípa stav baterky drancovaný zbytočne zapnutými spotrebičmi. Dvesto metrov pod hladinou máte šťavu do vrtuliek na 10 minút a chladná smrť s trochou dusenia je na dosah. Iba ak nemáte náhradnú baterku alebo termočlánok, ktorý sa vie dobíjať z potenciálu rozdielov teplôt z blízkeho lávového výduchu. Svetlo na konci tunela bude skôr lampička na nose iného papkoša veľkosti miniponorky. Spomenul som už celé tisícročia opustené, zatopené štruktúry a stavby prastarej mimozemskej civilizácie na pobreži ? Aha, ešte neviete, že ste stroskotali na cudzej plánete "4546B", kde okrem iného bežal ich výskum morského super predátora, akého ešte slnečná sústava nevidela. To monštrum s vami v hre telepaticky komunikuje a ide aj o superinfekciu, ktorá zabila miliardy. Best horror non-horror game !!! A čo to - voľné pokračovanie Subnautica - Below Zero /work in progress/ aj s pobytom na zamrznutej súši, denným cyklom, dynamickým počasím a samozrejme pokračovaním príbehu.

"Koniec Playstation v Japonsku." Konečne koniec utrpeniu, nastavovaná kaša. Denne čítam v novinách, časopisoch o demografickom kolapse japopnsko. Je to vymierajúca populácia, ktorá do konca storočia príde o polovicu obyvateľstva. Pre veľké hry irelevantný trh. Už iba pachinko a malé nintendo pakárne. Už som tu niekoľkokrát písal o rozpade SONY Japan Studio, z ktorého zutekalo mnoho predných vývojárov. Vieme, ako tá cynická sviňa Jim Ryan /šéf Sony Interactive Entertainment/ jasne povedal, že japonský trh je pre nich doležitý ako nikdy predtým. To znamená v menej diplomatickej reči presný opak. Je to škoda z pohľadu japonských vývojárov, lebo anglosaská kultúra a jej podobní prisluhovači produkujú iba nudný hnoj ako GTA, Witcher, Cybepunk, Assassin hry. Temná, stredoveká gotika a "flow" boja Bloodborne je v ostrom kontrapukte ku pitoresknému stredoveku Witchera s jeho bezradným, papierovým bojákom /pritom poľským kráľom je toto prostredie rozhodne natívnejšie ako japonským samurajom/.

"Auditko o hrách, ktoré ste radšej hrať nemali." A prišli ste na to neskoro, teda škoda investovaného času. Osobne som mal v detstve skôr opačný problém. Hlavne pri JRPG som do toho odpadu cielene a tvrdohlavo hrýzol a často úplne zbytočne. Tak ako Square mal svoju zlatú hus v podobe Final Fantasy /FF/ série, tak aj konkurenčný Enix mal nemenej slávnu ságu Dragon Quest /DQ/. Kedže sa snažim čítať medzi riadkami, tak som pochopil, že DQ hry sú patologicky nudné a cieľovka sú veľmi "zvláštni" patróni. Každopadne na PS2ke som sa na DQ8 vrhol /technické spracovanie vyzeralo veľmi dobre/ a snáď to až tak zlé herne nebude. Bolo a to aj s úrokami. Je to úplne degenerovaná hra bez formy aj obsahu. Boják to má ako FF1, teda niečo tak bizarne tupé, jednoduché, že aj napísanie DEBIL na kalkulačke je ešte aj teraz väčšia zábava. Každý dôležitý bod /boj, RPG manažment, worldmapa, scenár, postavy, dráma/ tej hry je ako behavioriálny program pre retardovaného autistu. A pretože ma to nezlomilo, tak som obratom skončil po krk v sračke s hrou Star Ocean: Till the End of Time /PS2/ alebo Xenosaga 1-2-3 /PS2/ či FF 10 /PS2/. Všetko JRPG, fujky. Dnes som už múdrejší, mladosť pochabosť je preč a to, že je Cyberpunk 77 priekak dekády mi bolo jasné, že z každej vety, ktorú dev tím položil na papier. Stačí mať otvorené oči a uši.

5 Jan 2021

Raytracing a nezištná pomoc rasterizácie

PlayStation 5 síce má HW podporu pre "raytracing" ale zastaralá rasterizácia jej paradoxne ku väčšej kráse a sláve tých RT efektov ešte bude musieť chvíľku mocne pomáhať. Jeden taký trik si neskôr ukážeme. Nižšie máte rozdelenie úrovne spracovanie raytracingu v HW /rasterizácia nech je jeho primitívna proto forma/ podľa Imagination Technologies s jej dobre známou GPU rady PowerVR /svojho času aj v konzole Sega Dreamcast, Apple mobiloch alebo v PlayStation Vita/. Imagination bolo inováciami GPU architektúry často o krok vpredu pred mainstreamovými desktop alebo mobilnými GPU a neskôr veľa energie investovali do HW akcelerácie raytracingu. Ich kompletné HW riešenie RT na budúci rok sa má volať Prism. Dnes sa však skôr sústredia na čo najvyššiu efektivitu pri čo najmenšom odbere elektrického prúdu. Bohužiaľ sú odvšadiaľ masívne vytlačovaný vlastnými riešeniami konkurenčných firiem ako Exynos čipset Samsungu, Qualcomm a jeho Snapdragon, M1 pri Apple, Huawei a Kirin. Raytracing v HW podľa Imagination Technologies:

Level 0 – klasická rasterizácia
Level 1 – softvérový raytracing na CPU/GPU
Level 2 – testovanie intersekcií ray/box a ray/triangle v RT HW
Level 3 – Bounding Volume Hierarchy (BVH) akcelerácia v RT HW
Level 4 – akcelerácia BVH  a spracovanie koherencie v RT HW
Level 5 – akcelerovaná BVH a koherencia plus generátor hierarchie objektov na scéne v RT HW

Najnovšie PC grafické karty a next gen konzoly PS5/XSX sú na úrovni tri. Imagination aj na štvorke a päťke a pripojili aj vtipný komentár, v ktorom som ihneď spoznal PS5 a jej hry. Hovoria - na konzolách si môžte všimnúť striedme použitie RT, pretože HW nie je dosť efektívny pri použití celého spektra komplexných RT javov. Napríklad v demo sekvencií jednej hry na konzole si vidíme na lesklej podlahe odrazy objektov, ktoré sa ale okamžite strácajú pri zmene stavu toho objektu /deštrukcia na menšie časti/. Je tomu tak preto, lebo RT HW nestihne zachytiť dostatočne rýchlo zmeny geometrie na scéne lebo chýba HW podpora pre generátor hierarchie objektov /čo je úroveň 5 pri HW RT, pozn. je možné si tu trochu pomocť aspoň viacúrovňovým BVH ako BLAS-TLAS/. Zároveň v inej hre si môžte všimnúť iba single-bounce reflexie a nižšie rozlíšenie odrazov, lebo chýba spracovanie koherencie lúčov v RT /čo je level 4, pozn. opäť si trošku pomôžeme v softvére kódom pre spájania, či znovupoužitie dostatočne koherentných lúčov podľa určeného tresholdu/. Je celkom jasné, že hovoria o hrách Ratchet and Clank a Spiderman pre PS5. Level 5 HW RT podľa Imagination už v PS5 samozrejme mať nebudeme, možno v PS5 Pro, takže si musíme pomocť nejakými trikmi a fintami.

RT odrazy sú najčastejšie používaným grafickým efektom v prvých hrách na PS5. RT odrazy sú pochopiteľne nadradené kvalitou SSR /Screen Space Reflection/ alebo archaickému použitiu duplikovanej geometrie /vhodné pre PS1 pri 2500 polys na frame/. SSR je vlastne plno-obrazový postefekt, ktorý sa pozrie do normál depth buffera a sleduje vektor ku intersekcii /depth buffer ako súčasť bežného G- buffera pri ešte bežnejšom deferred non RT renderingu/ a počíta odraz podobne ako to robíme pri raymarchingu. SSR odraz zobrazí iba to čo vidíte na obrazovke /funguje v "screen space" adresnom priestore/. Je to relatívne výpočetne náročný postup, relatívne preto, lebo RT je ďaleko náročnejší, duplikovaná geometria nepoužiteľná, cube maps nezvládajú self-reflexie, reflection probes zas majú nízku presnosť a veľa falošných artefaktov. Skúsime teda nejako SSR a RT skombinovať dokopy ?

 SSR versus RT

Na obrázku vľavo vidíte bežné SSR /postefekt, takže je mu geometrická komplexnosť ukradnutá/ s jeho dobre známymi nedostatkami. SSR nevidí nič čo je mimo hraníc alebo priamo ľudským okom viditeľných častí obrazovky. Nevidíte teda v odraze spodok tej konvice na čaj. Nevidíte hlavu tej sošky. Nevidíte polovicu múra a samozrejme ani tmu za vašim chrbtom alebo mraky nad hlavou. SSR je rýchlejšia ako RT ale zároveň takmer poloslepá. Obrázok vpravo je bežné RT /mimochodom ten je zas mimoriadne citlivý na komplexnosť geometrie/, ktoré chýbajúce časti /dno konvice, hlava, múr, to za chrbtom, mraky nad hlavou/  všetko korektne zobrazí. Ako som už naznačil - múdre hlavy napadlo kombinovať oboje metódy dokopy na jednom frejme. Rýchlejšou SSR zobraziť všetko čo sa dá a náročnejšiu RT použiť iba na časti odrazov, koré SSR nevidí. A výsledok máte nižšie.

hybrid SSR + RT

Aj vlk sa nažral, aj ovca ostala celá a je to rýchlejšie ako pri sólo použití iba toho RT HW. Takmer dokonalé a pre potreby hry úplne dostačujúce. V tom červenom rámčeku vľavo je jav, na ktorý sa určite niekoho napadne sa spýtať. A teda či vo finálnom zlepenom odraze SSR + RT nevidieť "švíky", kde sa to lícovalo dokopy. Áno podobné miesta sa dajú najsť ako vidieť v rozdieloch v kvalite samplovania textúr na cihlách tej steny. Je možné to ignorovať, je možné to aj ďalej poladiť. V hre sa však na 100%-nú presnosť a vizuálnu kvalitu pri tak základnej akcelerácií RT v HW ako má PS5 zatiaľ veľmi nehrajme. V natívnej PS5 hre teda časť grafiky beží cez HW rasterizáciu, časť cez RT HW, časť cez alternatívnu sofvérovú render-pipelajnu cestu a časť v asynchrónnom režime mimo hlavné compute shader pole. Celkom mišung a chce to expertnú znalosť kódovania. Ak bude nejaká PS6, tak dôjde určite ku dramatickému zjednodušeniu tohto procesu - postrasterizačná éra.

2 Jan 2021

Magic Castle /Kaiga, 1998-2020/

Garážová hra pre PlayStation 1 /na vývojárskom kite Net Yaroze/, ktorú sa podarilo /takmer/ dokončiť po 23 rokoch práce akurát pred týždňom na vianoce 2020. Akčné RPG, v ktorom beháte po hrade plnom bubákov a pascí. Ako v dnešných "Souls" hrách. Truhlice sa otvárajú, RPG štatistiky rastú. Dizajn hradného bludiska a rozmiestnenie vecí je generované náhodne. Voľba povolania - mocný rytier, levitujúci kúzelník, Robin Hood a Bruce Lee. Klasika. Kameru ovláda kód hry, nie vy. Voliteľne hrajú až štyria hráči naraz kooperatívne a o nájdené veci sa môžete podeliť. Nádherná hudba nie je streamovaná z CD ale využíva audio HW PS1 a zvukové dáta sú uložené vo formáte podobnom MIDI /SMF, tuším skratka pre Standard Midi Files/. Originálna hudba bola prototypovaná na Rolande SC-88 pomocou MOTU Digital Performer. Hudba, tempo sa dynamicky prispôsobuje atmosfére a situácii v hre.

 
originálne video na VHS páske z roku 1998, s ktorým sa skúšali predať veľkým firmám

A rýchle info pre vás z intervijú zo začiatku minulého roka. Hlavní autori hry sú K. Matsunami /dnes maká pre SEGA AM2/ a PIROWO /hry a audio ale na vlastnom ihrisku/ a originálny Roland základ mimo dev tím mal na starosti Soshi Hosoi. Obaja borci vyrastali v prostredí hier a hardvéru SEGA, Namco, Konami, Capcom, SNK a pochopiteľne Nintendo a podobne ako ja boli prvýkrát šokovaný možnosťou ovládať niečo pohyblivé s pixel presnosť na CRT telke. V mojich "slovenských, socialistických" časoch bola TV niečo o váhe 60 kilogramov z moskvy, s dvoma televíznymi kanálmi, bez diaľkového ovládača a nikoho ani nenapadla nejaká interaktívna, herná zábava.

V ďalšom kole prešiel Matsunami cez HITACHI Basic-Master JR /štandardné BASIC programy/, potom MSX /niečo podobné ako 8 bitové ZX Spectrum s lepším GPU/, nasledovalo "céčko" na Sharp X68000 /domáce monštrum čo zvládalo aj hry z arcade kabinetov/ a nakoniec ako SNES vývojár s dobre známou gamesou Aero Fighters alias Sonic Wings. Pirowo skladal kopu hudieb pre X68000ku a neskôr machroval s audiom pri arcade hrách vrátane konverzných systémoch vďaka, ktorým sa hudbičky z X68000 dali napasovať na HW NEO-GEO konzoly ako v hre Aero Fighters 2 alias Sonic Wings2. Zákonite sa obidvaja stretli pri projekte Sonic Wings Special pre Playstation 1 a Sega Saturn. Pirowo ako jeden z hlavných šéfov. Hneď potom sa obaja dobrovoľne vo veku iba 21 rokov ocitli na voľnej nohe a začali vyvíjať software pre Net Yaroze.

Net Yaroze zmerčili potom ako ju SONY propagovalo v herných časopisoch. Matsunami sa celkom správne rozhodol, že budúcnosť je v hrách, ktoré predajú milióny kusov, pritom dev tím bude mať silu iba dvoch chlapov. Nezabudnime, že mali iba 21 rokov /heh/. Asety Magic Castle vytvárali vo Photoshope /2D/, 3D modelovanie v programoch Lightwave a Poser. Každopádne sa im Net Yaroze zdala ako veľmi lákavé a lacné /!!/ vývojárske prostredie pre ľudí /iba 1200 dolárov v tom čase/, čo mali hlboko do vrecka. Od babky si prenajali druhé poschodie nad jej zverimexom, nakúpili zopár PC a nová herná firma bola na svete. KAIGA, rok 1997.

Pri voľbe témy hry sa inšpirovali gamesami ako Dragon Buster /Namco/ a zbieranie mincí majú z Fantasy Zone /Sega/. Ich hra je však v troch rozmeroch, má rogue elementy a pri každom novom hraní sa randomizuje. Vývoj hrateľnej alfa verzie trval 8 mesiacov a o štyri ďalšie im došli všetky ich úspory. Medzitým sa snažili hru, koncept predať asi 7 veľkým herným spoločnostiam v japonsku. Prvá bola oslovená SONY. V tomto momente už žili z ruky do úst a očakávania z ich strany boli veľké. A ponuka SONY prišla a bola nasledovná - chceme aby ste robili pre nás a na našom projekte. Naši borci však odišli z korporátneho prostredia, aby robili pre seba a to čo chcú oni. Takže SONY odmietli.

Oslovili následne ďalšiu obrovskú spločnosť produkujúcu slávne RPG hry /pozn. neuvedená, Square?, Enix?/. Odpoveď prišla, že ak aspoň jeden z jej "desiatich" výkonných riaditeľov povie OK, tak tu hru dokončia. Zbalili saky paky a išlo sa na ďalšiu prezentáciu. Dostalo zelenú od "troch" riaditeľov. Firma by zaplatila ďalší vývoj ale oni mali zatiahnúť nábor ďalších členov do dev tímu. V tomto momente sa ťažko pracujúci chlapci bez peňazí po zvážení všetkých premenných definitívne zlomili a tím sa rozpadol. Hra nebude dokončená, je rok 1998 a rozprávke je koniec.

Dnes len ticho závidia kvalitu už hotových a vyzrelých herných enginov ako Unreal engine, Unity alebo Dreams. Čo vidia skôr ako problém sú herné nápady a hlavne ich exekúcia. Tiež kontrast medzi mega obrovskými hrami s gigantickým budgetom a indie scénou. Aj keď kvalita herného nápadu by sa mala hodnotiť rovnako /pozn. čo nie je celkom pravda pri priemernom hráčovi, spotrebiteľovi/. Čo vidia ešte ako väčšie plus je, že ich hra vytvorená na Net Yaroze musela prejsť cez nejakú formu autorizácie a bolestnej prezentácie a nebolo možné ju len tak spustiť na bežnej, predajnej PS1. Dnes to proste zavesíte na internet. Dokončiť Magic Castle sa rozhodli v roku 2020, ZIPko má 186 mega /torrent/ a chýba už len ten mód pre 4 hráčov a japonský preklad ale chcú to dotiahnuť do úplneho konca.

29 Dec 2020

Hybridný rendering - rasterizácia/raytracing

Bude to pravdivý príbeh so šťastným koncom a určite príde aj spiderman. Rasterizácia je viac "umeleckou licenciou" vedená tvorba hernej grafiky. Všetko to svetlo, odlesky, tiene, polotiene, odrazy sú tam, kde si vy ako autor myslíte, že by mali byť, alebo kde ich úmyselne chcete mať, aj keď fyzikálne nekorektne. Desať hier, desať rôznych autorov a enginov, desať odlišných vizualizácií tej istej scény napriek tomu, že ste použili identické objekty a materiály. Raytracing funguje už z princípu úplne opačne. Algoritmus výpočtu všetkého je vo všeobecnosti exaktne presný a všetci dosiahnu na pixel ten istý výsledok. Líšiť sa musíte objektami, kompozíciou scény, materiálmi. Neberte ma ale doslovne, aj výstup pri raytracingu môžte individualizovať do nepríčetna. V jadre je však raytracing matematika a rozum. 

Dreams - softvérový /GPU ALU compute/ rasterizér bez polygónov

Rendering v reálnom čase bez klasickej rasterizácie sa už dnes používa na platforme Dreams /PS4, PS5/. Hra nepoužíva ani štandardné mesh-poly objekty. Všetko je SDF /signed distance fields/ geometria a raymarching, ktorý používa SDF na akceleráciu výpočtu putovania lúčov "svetla". SDF je kompletne nová paradigma riešenia hmoty objektov /plne deformovateľných/ a nasvietenia scény. Aj základná PS4 zvláda slušne túto metodiku čiste na "softvérovej" báze, teda CPU plus ručne stručne nakodovaná alternatívna compute render pipelajna na GPU. SDF je iba jeden z postupov, jedna cesta ako sa zbaviť limitujúcej rasterizácie na trojuholníkoch. Zatiaľ nevieme, ku ktorej alternatíve sa v ďalších 10 rokoch postupne grafický hardvér hlavných hráčov prikloní. Predbežne sa opatrne začína budovať isté HW zázemie pre zrýchlenie niektorých krokov overeného raytracingu a výrazne sa zefektívnila tvorba vlastnej renderovacej cesty na GPU, obidením defaultnej s plnou HW podporou ala spomínaný Dreams /alebo Claybook/.

V prechodnom období ku plnému raytracing /globálne nasvietenie, "všetky tiene", reflexie, kaustika/, kde sa dostaneme tak do 10 rokov, si užijeme hybridných postupov rasterizácia-raytracing šitých presne na mieru HW /nemáte ani predstavu ako veľmi dôležité je to spojenie - presne na mieru/. Ak hovoríme o konzolách, tak zabudnite na PC DirectX rozhranie /DXR/. Aj na tom bežnom hernom PC s lepším intelom a starším GPU Nv 970 je však možné vydolovať výkon, ktorý by ste tam nečakali. O tom trochu neskôr. Volíme teda hybridný rasterizácia/softvérový raytracing postup čiste na CPU a non-RT GPU. Sledovanie lúča pôjde v prvej fáze cez rýchlu rasterizáciu /určenie prvého ray zásahu/ a sekundárne lúče už čiste cez softvérový raytracing na CPU /bez použitia RT HW v GPU/. Sekundárne lúče nám umožňujú použiť efekty ako reflexie alebo priame aj nepriame tiene, teda veci, kde je rasterizácia dosť bezzubá a na programovanie veľmi náročná. Rozumej oveľa menej efektívna.

V raytracingu teda strieľate /presnejšie rekurzívne sledujete/ lúče  a pozorujete, kde narazia na nejakú geometriu. Už pri jednom lúči na pixel obrazovky a pri miliónoch polygónoch-trojuholníkoch na scéne je počet možných permutácií doslova nekonečný a brute force postup možný iba pri veľmi jednoduchej grafike triedy PS1-PS2. Tu masu štruktúr na obrazovke teda musíme nejako optimalizovať, indexovať. A na to slúži aj Bounding Volume Hierarchies (BVH) štruktúra v tvare stromčeku. Objekty si pekne hierarchizujete a keď "matka" v indexovom poli výpočet intersekcie lúč-poly nepotrebuje, tak "dcéra" pod ňou ho nepotrebuje tiež a "nepočítame ju". A máte akceleráciu výpočtov. Po novom práve toto traverzovanie /behanie po stromčeku, má myriady položiek/ robí v GPU špecializovaný HW a to buď na celú množinu-rodinu objektov alebo na jednotlivý polygón-trojuholník jednotlivca. BVH problematika má asi stotisíc nuáns /veľmi mi to inak v niečom pripomína prastarý copper list pri amige/, tým sa však zaťažovať nebudeme a existuje more ďalších podobných postupov ako je SAH /Surface Area Heuristic/. Chcem tým iba povedať, že je možné hlavne na konzolách ako PS5/XSX najsť riešenia, ktoré bude bez preháňania hyperoptimalizované a vysoko nad výkonnostný rámec toho, čo od podobného GPU vidíte v štandardných multiplat hrách vrátane PC pod DXR dnes !!

sotfvérové RT tiene a reflexie v jednoduchej scéne

Vyššie teda máte praktickú video ukážku namiesto nudnej teórie. Intel CPU v tomto prípade behá po BVH stromčeku a robí špinavú prácu /tento krok dnes moderné PC GPU a next gen konzoly akcelerujú na grafickom čipe extra špeciálnou jednotkou/. GPU Nv 970 robi tú rasterizačnú a ALU compute časť. Výsledný framerate na scéne s RT odrazmi a RT tieňami je 150fps. Moja Nv 1070 je cca o 50% v hrubom výkone lepšia a PS5 GPU má výkon minimálne dvoch mojich 1070 s k tomu ešte podporu pre RT. Jedno s druhým mi z toho vychádza, že neskoršie PS5 hry by celkom komfortne mali zvládať aj situácie, keď budú použité RT reflexie a tiene naraz. Dnes je to zatiaľ buď - alebo.

Chlapík pri svojom čiste softvérom raytracingu použil množstvo optimalizácií a kód bol prispôsobený exaktne presne na daný HW /to čo mu funguje dobre na Nv 970 išlo mizerne na inej grafike iného výrobcu/. K tomu PC totiž pristupoval ako ku konzole. V reálnych podmienkach by musel vytvoriť špeciálny profil pre každé PC GPU na trhu. Zabudnite. Skúšal umiestnovať dáta na rôzne miesta RAM, kešiek, registrov aby dosiahol čo najlepší výkon. Bola to piplačka, lebo testoval desiatky verzií a subverzií ALU compute shaderov. Raytracing je veľmi náročný na kvalitu RAM /rýchlosť, latencia/. GPU je nutné saturovať skutočne optimálne. Brute force prístup je rýchly, lacný ale dobrý iba laxného multiplat vývojára a Nv 3090. Výsledný kód /neopodarilo sa mi to rozbehať na Nv 1050 ani Nv 1070, heh/ tej jednoduchej scény vo videu by na PS5ke určite bežal nad 300 fps. 

V ďalšom kroku tento "syntetický" test s guličkami a kockami presunieme do hernej reality a komplexných štruktúr. Pokazím pointu ale nakoniec to celé, toto obyčajné cvičenie a hranie sa s kódom, skončilo vo Forge platforme /Wolfgang je grafický guru, ex R* inžinier s obrovskými skúsenosťami/. Forge je modulárne, multiplatformové middleware, ktoré vám umožňuje si v ňom nacvakať aj vlastný engine. Spiderman PS4 renderuje svoje nebesá práve po Forge expertíze s použitím Ephemeris 2 modulu. Som absolútne presvedčený o tom, že Resident Evil remake pre PS4 zvládne PS5 s raytrace odrazmi a tieňami aj čiste softvérovou cestou. Tmavé prostredia, tmavá paleta farieb, ktorá hravo zamaskuje aj eventuálne nižšie rozlíšenie RT efektov.

softvérové RT tiene - na cirka 200 fps

Po masívnych úpravach /znovu prekopané BVH, parciálne SAH, iný typ float výpočtov, kešovania bufferov, culling všetkeho/ softvérového raytracera je stále na tej Nv 970 už schopný utiahnuť aj bežnú hernú geometriu /vyššie vo videu je použitý referenčný objektový model Sponza/. Po radách od borcov z Epicu a ex Santa Monica klesol napríklad čas potrebný na spracovanie RT tieňov z 13 ms na cca 3.5-5.5 ms pri tieňoch o 1/4 rozlíšení alebo na 10.5ms v plnom rozlíšení tieňov v 1080p. Po zmenách sú tiene viac ALU ako TEX závislé, takže výkon rastie lineárnejšie s počtom CU jednotiek /a kvalitou kódu/, než od počtu HW textúrovacích jednotiek. Stále ostáva dosť pracovných cyklov na softvérové RT reflexie a logiku hry, aby to skončilo na solídných 1080p/30 s RT a bez HW podpory pre raytracing. Pripomínam crytek RT demo pre non-RT GPU kde s reflexiami o polovičnej kvalite dám na Nv 1070ka hladko 1080p/60fps. Mám teda rezervu "30 fps" na RT tiene alebo hernú logiku pre komornejšiu hru triedy Resident Evil. PS5 je pritom v globále v hrubom minimálne o 250% výkonnejšia /CPU+GPU/, než to čo mám doma. Možnosti sú tak obrovské, že 6-7 rokov ďalšej generácie nebude stačiť ani na ich letmý dotyk. Výkonnejšie dvoj-úrovňové BVH s BLAS /Bottom Level Acceleration Structure/ a TLAS /Top Level Acceleration Structure/, ktoré použil COD: Moder Warfare je iba skromná špička ľadovca.

19 Dec 2020

„Aj najtenší vlas vrhá tieň"

Povedal sýrsky otrok v starom ríme Publilius Syrus a Johann Wolfgang von Goethe kontroval s „pri väčšom svetle je väčší tieň´". Ja dodám, že má z klasických grafických nedokonalostí hier máločo vytáča tak ako je 200 metrov dlhý tieň budovy, ktorý frivolne zmizne alebo svojvoľne doskočí, keď letím rýchlo nad povrchom. Cválajúc na koni to nie je o nič lepšie a "transformácie" približujúcich sa tieňov stromov na ostrejšiu verziu sú pre mňa neakceptovateľne rušivé. Od 32 megabajtov veľkosti pamäte PS2 som dnes na 40 gigabajtovom PC a žiadneho radikálneho zlepšenia tohto problému som sa nedočkal. Na veľkosti zjavne nezáleží, potrebujeme skôr šikovného gašparka.

Aj najtenší vlas vrhá tieň

Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/
Aj najtenší vlas vrhá tieň

Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/
Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/
„Aj najtenší vlas vrhá tieň.“ — Publilius Syrus

Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/
Aj najtenší vlas vrhá tieň

Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/
Aj najtenší vlas vrhá tieň

Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/
Aj najtenší vlas vrhá tieň

Zdroj: https://citaty-slavnych.sk/citaty/31862-publilius-syrus-aj-najtensi-vlas-vrha-tien/

Virtuálna RAM je už rutinne používaný koncept, ktorý vytvára ilúziu oveľa väčšej pamäťovej kapacity spojením kapacít pamäťových čipov a nejakého pomalšieho úložiska. O manažment fyzických a virtuálnych adries toho, kde sú dáta v skutočnosti uložené sa stará mix HW /MMU - memory management unit/ a softvérových krokov. V prípade konzoly ako PS5 herný kód vidí 16 GB na čipoch a 825 GB na SSD ako jednu a tú istú kontinuálnu, veľkú pamäť. Identický postup môžme aplikovať na virtuálne textúry. Presnejšie a trefnejšie označenie je anglické Sparse Virtual Textures. Sparse ako textúra, ktorá nemusí byť prítomná celá v lokálnej najrýchlejšej pamäti ale on-demand iba jej vyžadovaný texel. Texel je časť textúry, ktorú musíme priradiť konkrétnemu pixelu na obrazovke. Chce to more rafinovaného programovania a lámania si hlavičky ale benefity sú obrovské.Virtuálne textúry na plné naplnenie svojho potenciálu potrebujú na strane HW mimoriadne výkonné riešenie IO systému /transfer dát/, optimalizované kešky, rýchle zbernice. Hra Rage id Software pre PS3/Xbox 360 sa o všetko vyššie pokúsila už na veľmi limitovanom HW tých konzol.

Nechcem však hovoriť o textúrkach alebo o tom ako šetriť pamäť next gen konzol. Problémom nie je veľkosť RAM, sila geometria, rozlíšenie textúr, svetlo. Problémom sú tiene v hrách a čakanie na dobré riešenie. Priame tiene, tie ktoré vznikajú, keď objekty zasiahne slnečné svetlo alebo veľmi silný zdroj svetla sú stále v dezolátnom stave. Náročnosť na ich uloženie a spracovanie je tak obrovská, že pri prvej príležitosti bez váhania tiene miznú, sú nahrádzané meter od hráča niečím s mizerným rozlíšením. Krajne rušivé doskakovanie, úplna strata tieňa, celková nestabilita.

mapovanie tieňa, ktoré má problém s perspektívou a projekciou do priestoru

Hlavnou slabinou tieňov pri klasickej rasterizácií /tá tu s nami ešte chvíľku pobudne/ je ich podvzorkovanie - nemýliť si s rozlíšenim. Máte tieňovú textúru v rozlíšení 1024x1024 až 4096 x 4096 pixelov /keď ich je niekoľko stovák natlačených do RAM - je to za bežných podmienok zabiják na jej veľkosť a rýchlosť/ a plácnete ju do plochy. Tieň sa váľa po nerovnej krajine a dochádza ku nespočetným artefaktom pri deformácii tieňa. Perspektívny a projekčný aliasing. Ak tieň sedí počtom svojich texelov na počet pixelov a ich normály /vektor kolmý na plochu/ harmonizujú ešte to nejako funguje. Ak je pixelov viac /čo je istota/ a normály idú krížom, tak na 1784 pixelov obrazovky naťahujete svojich reálnych 1024 texelov tieňových mape. More artefaktov. Ak navyše prekročíte nastavený RAM treshold a fillrate GPU pre tieto operácie prídete o tieň úplne.

Sebastian Aaltonen /ninja kóder, dnes maká na Unity engine/ navrhuje opačný postup. Inverzné mapovanie, index texel/pixel 1:1, extrémne nízke zaťaženie RAM, extrémne vysoká kvalita tieňov, zbohom klasické tieňové kaskády a celkové striedme použivanie tieňov a ich rýchle odstraňovanie z plochy lebo sú prílišným zaťažením pre systém. Dosiahneme toho nepriamym samplovaním tieňovej textúry, výpočtom non-virtuálnych UV koordinátov a kešovanie texelu pomocou týchto koordinátov. V jednoduchej reči - neplácneme tieň na objekt ale objekt po zhodnotení pixel-texel statusu si zavolá na svoju pozíciu iba ten potrebný texel. Plus modifikujúci shader kód v asistencii /aj asynchrónne, tiene sú menej citlivé na latenciu/. Nepotrebujeme celý tieň v pamäti, nepotrebujeme 32 giga VRAM, neriešime problémy s projekciou a perspektívou tieňov. GPU nám navyše cez compute shader môže dosamplovať texely z 4096 pixel mapy aj na jej 10 násobok. Flexibilne a podľa lokálne podľa potreby. A celé to stále bude rýchlejšie ako tie tieňové kaskády a hry s mip-mapami.

 

Unreal 5.x demo pre PS5 používa práve túto metodiku pre spracovanie tieňov ako súčasť Lumen  /alebo virtualizovanú geometriu  ako sub-engine Nanite/. Môžeme povedať, že ide doteraz o najefektívnejšie využitie klasickej rasterizácie, ktoré si muselo počkať na špeciálne upravené GPU a dostatočne rýchle úložisko s robustným IOP. Všetko vyššie povedané je už veľa rokov teoreticky dokonale rozpracované, technologicky opakovane demonštrované ale reálne/herné aplikácie si museli počkať, až HW dozreje aby sa to dalo používať ako skutočne produktívny nástroj, nie otravná obštrukcia. Opakujem, že sa nachádzame v najviac prechodovej generácií konzol všetkých čias, lebo v pozadí sa celkom urgentne riešia otázky ako sa konečne zbaviť polygónov a prejsť na non-ortodoxný mesh rendering /ako ukazuje SDF Dreams engine/, globálne svetelné riešenie smerom plného /ray/ path tracingu a konečne implementácie všeobecnej fyziky na celú scénu, čo je zatiaľ celkom tabu a obmedzujeme sa na občas kotúľajúci bochník syra dole úbočím v hre Skyrim.

18 Dec 2020

Sonic - optimalizácia a kompresia

Final Fantasy 6 pre SNES je kolosálna hra s famóznou pixel art grafikou a audiom. Priemerná doba prvého prejdenia hry je niekde okolo 35-40 hodín a celé sa to vôjde na 3 megový kartridž. Ešte technicky lepší Chronotrigger si vystačí so 4 megami. Tales of Phantasia mala 6 megabajtov /a intro so samplovanými hlasmi a 16 kanálové audio/ a nakoniec Star Ocean to úplne zarezal s dodatočným čipom S-DD1 pre dekompresiu a hra mala po rozbalení 12 mega. To je ekvivalent 100 gigovej hry dnes. Všetky tie SNES JRPG gamesy som krvopotne svojho času pretlačil cez SNES emuláciu, ktorá vtedy bola ešte v pokakaných plienkach. Vidíte teraz koľko vzácneho kartridžového priestoru dobrá hra zaberie a aké vychytané softvérové, optimalizačné postupy asi museli japončíci vymyslieť, aby to tam natlačili. Opúšťam teraz nintendo a preskakujem na megadrive, kde mi miestny borec Sonic hovorí, že len jeho vlastná animácia má cca 220 kilobajtov. Celá FF6 pre SNES má pritom 3 mega !! 

 
Sonic 3D Blast je posledná, vydaná sonic hra pre megadrive. Používa "izometrické" zobrazenie a hlavný hrdina nemá ručne urobenú pixel grafiku ale vyrenderovanú v 3D štúdiu s peknými odleskami. Hýbe sa do 16 smerov a v každom má 12 frejmov animácie. Vyzerá to v pohybe krásne ako CG panduľák z Toy Story. Celá táto paráda ale bez úprav zaberá 220 kilo. Takže toto číslo musíme zraziť dole zapojením mozgu a bez pomoci drahého čipu pre HW dekompresiu. Prvý redukčný krok je využitie faktu, že postavička v niektorých smeroch behá zrkadlovým otočením animácie. Nemusíme teda tieto dáta uložiť ale stačí ich v HW v smere osi otočiť. Už teda nepotrebujeme animáciu v 16tich ale iba v 9tich smeroch. Objem dát spadol na 121 kilo. Skoro na polovicu.

A ideme ďalej. Hlavný sprajt sonica je umiestnený na mriežke 6 x 6 znakov /znak je vlastne atribút veľkosti 8x8 pixel/. Neukladáme dáta všetkých 36 znakov ale iba 22, v ktorých sa pixely sonica reálne nachádzajú. Dokonca keď telo sonica úmyselne posunieme o pár pixelov v gride doprava, tak zistíme, že dosiahneme nižšie pokrytie plochy a úsporu 3 celých znakov a tých 19, ktoré v tomto momente potrebujeme už zaberajú len 64 kilobajtov. Sme opäť takmer o polovicu dole. A posledný krok. Pozrieme sa aj "dovnútra" jednotlivého 8x8 pixel znaku. Zistíme, že ani tam samozrejme nie je 100% pokrytie, takže použijeme triviálnu RLE kompresiu, ktorú zvládne aj 8 bit. V tomto bode bude mať celá animácia sonica vo všetkých smeroch na kartridži iba 53 kilobajtov, teda 25% pôvodnej veľkosti. Zázrak.

 
Sonic 3D Blast - intro

Zázrak do troch dní, nemožné na počkanie. Sonic 3D Blast totiž má aj plne renderované FMV intro /full motion video/. Základná matematika - 320x224 pixel krát 30 frejmov za sekundu krát 12.5 sekúnd dĺžky intra = 27 megabajtov na kartridži o kapacite 4 megabajtov !!  Takže optimalizujeme. Veľkosť frejmu stiahneme na 320x200 pixelov, rýchlosť videa na 15 snímkov za sekundu a použije sa farebná paleta o sile iba 16 farieb. Voilá a intro video už má iba 6 megabajtov. Do akcie nabehne RNC kompresia /Rob Northen compression/ v sofvérovom režime a v tom prípade by to mohla zabaliť až s efektivitou 3:1. Problém, je že naše CPU to nezvládne rozbaľovať v reálnom čase dostatočne rýchlo /iba cirka na úrovni 5 fps/.

Prepočet ukazuje, že dekodovaný obraz nemôže mať väčšiu veľkosť ako 256x80 pixelov. Ako však vidíte vo YT videu vyššie, tak intro pokrýva "celú" plochu obrazovku, nie len maličký výsek v strede. Na roztiahnutie obrazu na celú plochu /primitívny upscale/ využijeme schopnosť GPU /VDP - Video Display Processor/ megadrajvu, že DMA pri blokových presunoch dát dokáže generovať prerušenie /kontrolovaný horizontálny interupt/ na každom horizontálnom riadku a takto vlastne riadok zduplikujeme dvakrát po sebe a dosiahneme lepšie pokrytie plochy. Pokračujeme vertikálnym ditheringom a interlace alterovaním snímkovania s dosiahnutím lepšieho rozlíšenia videa /doslova ako šachovnicový checkerboard rendering či interlace upscale na PS4ke, heh/. Finálna veľkosť FMV intra po všetkých týchto krokoch je 660 kilobajtov namiesto pôvodných 27 megabajtov /v nekompromisne najvyššej kvalite/. Asi je vám jasné a sonic to potvrdzuje, že Call of Duty dev tím zjavne nerobí všetko preto, aby sme pri ďalšom diely ságy nemuseli sťahovať 350 gigabajtov dát. Stále platí, že tvrdé limity, ktoré sa snažíte nejako obísť, podporujú tvorivosť, inovácie. Hojnosť je pochabosť.