25. 1. 2014

Raytracing a Playstation 4


Pred 15 rokmi som vyhral PC originálku hry Need for Speed 3. Mal som vtedy Pentium 100@133Mhz a čerstvo aj 3dfx Voodoo 1. Hra bežala ako víno, aj po "vymaxovaní" všetkých detailoch. Die Psone scum. Predsa len však bola v settings jedna pikoška. Zmena kvality "svetlometov" auta počas nočných jázd. Voľba medzi vertex a lightmapa svetlom /už si nepamätám ako to presne označovali/. Nastavenie na lightmapu vyzeralo na prvý pohľad lepšie, stabilný efekt, plynulé prechody medzi svetlom a tmou, hladko sa to kĺzalo po krajine, dokonca to bolo rýchlejšie. Vertex svetlo sa mi zdalo trošku pomalšie /framerate hry/ a malo to kostrbaté prechody svetlo/tma, ktoré na periférii oka čudne poskakovali ale .. ako keby to bolo oveľa reálnejšie a tie fótony naozaj udierali do scény pred mnou. Krajinka bolo skutočne "osvetlená".


Psone /video vyššie/ a na porovnanie aj PC verzie - "vertex" a "ligtmapa"

Vysvetlenie je jednoduché. Hra používa nočný lighting model, ktoré hrubo povedané beží buď na GPU /lightmapu/ alebo cez CPU /vertex/. Podľa toho v ktorom tom komponente si je vaše PC istejšie zvolíte to rýchlejšie. Voodoo 1 nemala s nejakou prašivou lightmapou /textúra !!/ žiadne väčšie problémy, CPU sa však s vertex nasvietením v reálnom čase trochu potrápilo. Povedal som v reálnom čase. Totiž tá lightmapa je iba blbý fake, keď auto pred sebou "tlačí" light textúrku a engine jednoduchým "maskovaním" odkrýva "nasvietené" časti obrazu. Vertex svetlo skutočne hľadá miesta /polygóny, vertexy/, ktoré by mohlo auto osvetliť. Vyššia kockatosť, poskakovanie svetla na hranách je spôsobené hlavne nízkym polycountom scenérie, menším vzorkovaním, ak to máme tak nazvať. PC verzia s akcelerovanou grafikou a dobrým CPU versus PSone verzia iba s vertex nasvietením /GTE engine na to proste má ale fillrejtom GPU a hlavne ram sa muselo šetriť/ - videá máte hore.

A o tom to je. Svetlo je základom vizuálnej kvality scény. Nie geometria, nie rozlíšenie alebo kvalita textúr a antialiasing. Tie štyri prkotiny sú navyše banálne ľahko už dnes zvládnuteľné. Svetlo je problém. Ak vám podhodím hernú scénu s 1000 000 polys /a hires textúrami/ v 4K rozlíšení a to isté s 100 000 polys /lowres textúry/ v 1080p, ale prvú nasvietim ako Laru Croft v 1997 a druhú s využitím všetkých známych techník bežiacich v reálnom čase /chystaný Uncharted 4/, tak si zvolíte okamžite tu druhú, zdanlivo "horšiu".

Svetlo je absolútny pán kvality grafiky. Ostro vykreslené detaily, keď slnko prenika oknom a dopadá na koberec /direct lighting/, odraz svetla na steny /indirect, bounce/, farebné presahy /bleeding, bloom/, prenik svetla materiálom, rozptyl /skatering/, priame ostré tiene, nepriame tiene, ostré a mäkké, reflexie na lesklom kameni, skle, zrkadle, kanvici, na bakelitovom slúchadle, pohltenie svetla, lom - refrakcia. Neuveriteľne množstvo interakcií, miliardy, ktoré vo finále robia scénu uveriteľnou. V ponímání hernej grafiky - fotorealistickou. Technicky ide o príšerne náročný problém, najprv musíte nájsť ten správny algoritmus a potom HW čo ho utiahne. V prípade hier v reálnom čase. Problém je o to delikátnejší, že dnešná GPU architektúra má stále charakter rasterizácie /proste tá lightmapa v NFS3/, zatiaľ čo my sa tu bavíme o diametrálne odlišných princípoch raytracingu /RT/. A tam sa zas nikto nehrnie, neb RT je nová paradigma a musí sa zmeniť úplne všetko. Hardvér, softvérové nástroje, celé postupy tvorby grafiky, enginy. Nehovoriac o tom, že raytracing má menšie problémy s dynamickou scénou meniacou sa v čase minimálne 30-60 krát za sekundu a teda s hrami. Musel by sa stať nejaký zázrak, ktorý by toto vedel vyriešiť.

"Object-order Ray Tracing for Fully Dynamic Scenes"

Je názov nového a prevratného programovacieho postupu, ktorý unifikuje klasickú rasterizáciu a raytracing /rekurzívne sledovanie sekundárnych lúčov/ aj pri plne dynamickej scéne. Prvykrát bude táto revolučná práca /hyperbolizujem, tých pokusov tu už bolo, heh/ na tohoročnej GDC - presne 25.3. 2014 a vyjde aj v známej publikácií GPU Pro 5, podpísaný pod tým budú Tobias Zirr, Hauke Rehfeld a herr professor Carsten Dachsbacher z univerzity v Karslruhe. Podrobné detaily teda neskôr.

Opäť trochu teórie, chcem aby ste pochopili aspoň ten základ. My ako ľudia vidíme svet okolo nás ako odrazené žiarenie /fotóny/ vo viditeľnom spektre. Slnko /baterka, žiarovka/ teda produkuje fótony, tie narazia na objekt a ak sa odrazia priamo našim smerom "do oka" hovoríme o primárnych lúčoch a tieto povrchy vlastne potom aj vidíme. Popísal som klasický herný raycasting /starý Wolfentesin a všetky hry po ňom/. Čo sa však stane s fotónom ak sa odrazí preč od nás a až po pár skokoch sa konečne dostane ku nám - to už hry neriešia /respektíve veľmi neohrabane napodobňujú fake technikami /. Raytracing sa postará práve o tieto sekundárne lúče.

A ak chcete ísť uplne do dôsledkov, musíme zohľadniť aj také drobnosti ako energetickú bilanciu povrchov. Koľko fotónov povrch pohltí, úplne odrazí, čiastočne odrazí. Čistá fyzika, zbohom anarchia art grafikov. A práve toto sú tie najnovšie postupy, ktoré sa už objavujú v next gen hrách ako physically based rendering /ligting, shading/. Ide vlastne o podmožinu radiosity /difúzna zložku svetla/ - iná problematika ako raytracing, ešte sa k tomu neskôr na pol slova vrátim. A tiež trochu predbehnem dej - nasvietenie hier ako v next gen Lare Croft alebo poslednom Assassine vnínam doslova ako fyzicky odporné a primitívne.

"hrudka zeleného hnusu, již jsem objevil v podpaží jednoho letního jitra"

Naspäť ku našim nemeckým priateľom. Ich technika umožňuje do existujúceho klasického "rasterizačného" herného enginu /!!/ zabudovať práve tú rekurziu pre sekundárne lúče aka raytracing bez ohľadu na to, či je scéna statická alebo dynamická. Ostáva vám teda schopnosť manipulovať scénou via bežné shaders /generovanie texelov, transformácie vertexov, animácia, teselácia/, dokonca vie zdieľať materiálový systém aj pri deferred renderingu /!!/. Ide o dokonalé hybridné riešenie, ktoré nás bezbolestne časom dostane aj ku plne raytracing/radiosita enginom a nakoniec aj ku zmenám v grafickom hardvére. Super.

Dnes sa tieto finesy, ako som už povedal, aproximujú falošnými technikami - viď hry ako Killzone Shadow Fall, UE4 tech demá alebo najnovší CryEngine. Kombinácia screen space raytracing /SSRT/ pre reflexie, cube maps polia atď. Fungujú to iba za ideálnych podmienok a produkuje množstvo artefaktov. SSRT odrazivý povrch napríklad vidí iba to, čo je medzi vami a tým "zrkadlom" - nevidi teda vašu postavu, scénu za vami, nad vami, vedľa vás. Doslova sa tam odráža iba to, čo sami vidíte na ploche PRED sebou, čo nevidíte sa tam neodráža. Sureálne. Pri pravom RT keď idete po ceste a na nej je mláka a vy do nej čumíte, tak tam objavíte odráz vtáka ohniváka čo vám letí nad hlavou. Vidím vám v očiach, že sa ma chcete spýtať ako tento zázrak pobeží na PS4ke, vlastne či vôbec ?

"It's very likely that the PS4 is capable of real-time raytraced reflections using this technique and when optimized, it could not only be used for rendering reflections and refractions, but for very high quality soft shadows and ambient occlusion as well."

Malo by to ísť. A vedľajším produktom budú aj ďalšie svetelné javy /nenápadná ale pre hĺbku obrazu veľmi dôležitá ambientná oklúzia alebo tzv. mäkké, soft shadows/, ktoré dnes veľmi prácne a systémovo náročne opäť iba napodobňujeme. To známe fake SSAO /screen space ambient occlusion/ je často na zblití - viď posledný Deus Ex /"tieň" okolo ľavej ruky, alebo celej postavy a ďalších objektov - v pohybe je to niečo prišerné/. Náš nemecký "revolučný postup" si poradí aj DX11+ teseláciou a umožňuje kombinovať tento PR plugin s globálnou ilumináciou - GI /ide teda o radiositu : energetická bilancia povrchov, vlastná žiarivosť telesa !! a hlavne odrazy difúznej zložky svetla/ - teda definitívne riešenie. A naši borci /Rehfeld, Dachsbacher + Ulbrich a Novak/ majú pripravaný ešte jeden materiál s názvom "Progressive Visibility Caching for Fast Indirect Illumination", ktoré sľubuje minimálne 5 násobne zrýchlenie GI oproti bežne známym postupom. Toto už ale PS4 len tak neubehá /ale fake postupy opäť pomôžu a radiosita nie je tak citlivá na rýchlosť a presnosť simulácie/. Výsledkom však bude hyperealistické nasvietenie a svetelné fenomény neodlišiteľné od skutočnosti /viď Maxwell render a kopu ďalších/. Skutočný vnem priestoru zaliatého svetlo, presvedčivá hra polotieňov a farieb, šero a božská dokonalosť. To však neznamená, že nefotorealistické postupy a pixel art nebude populárnejší ako nikdy predtým.