8. 8. 2013

Rasterizácia, raytracing .. path tracing !!!


Pred 30 rokmi ste pri výrobe hry potrebovali hlavne dobrých programátorov. Tých bolo ako šafránu ale mnohí boli natoľko renesančne zruční, že si ešte aj hernú grafiku a nejaké minimálne audio sami vedeli do hry urobiť bez cudzej pomoci. Na projekte robila bežne mini skupinka 2-8 ľudí, aj tak však vznikli pamätné hry čo prežijú veky. Dokonca ešte aj trochu neskôr v ére 16 bitov tu nájdeme one-man-army borcov ako Eric Chahi. Blázon, ktorý si okrem kódu alebo grafiky hry, nakreslil ešte aj obal jej krabice. Dnes si ho starší hráči pietne vešajú do obývačky. Dobré časy.

Dnes je situácia presne opačná. Progišov je more a sú vcelku lacní, najdrahšia časť hry je výroba herných asetov /grafika - vrátane animácie, audio/. Špičkové hry s opulentne bohatou výpravou sú strašne nákladné a bude už len horšie. Lepšia grafika proste požerie neúmerne množstvo peňazí a s tým je treba niečo urobiť. Moderný a výkonný HW nám trochu pomohol skvelými WYSIWYG editormi /značná úspora/ ale stále to nestačí. Hlavným vinníkom je totiž spôsob vytvárania grafiky: rasterizácia a zakladné grafické primitívum - polygón.

10 násobný nárast výkonu, 10 násobný nárast nákladov 
ale žiadne viditeľné zlepšenie grafiky = problém

Rasterizácia /alebo raytracing, path tracing/ si ako heslo isto nájdete na wikipedií, ale do očí vám hneď neudrú problémy s ňou spojené. Rasterizácia je úplne blbá. Týmto začneme a vedzte, že hardvér grafických kariet je precízne optimalizovaný tak aby na ňom práve táto celé veky používaná technika generovania pixelov bežala čo najrýchlejšie. Fajn. Teraz sa pozrite okolo seba a von z okna. Obe scény je možné rasterizáciou verne napodobniť, bude to však fantasticky prácne a drahé. Prečo ? Rasterizácia je úplne blbá !! Odporúčam do vašej pozornosti tento starší ale stále platný a môj obľúbený zahraničný článoček /časovo bol napísaný pred nástupom aktuálnej generácie konzol a viacmenej hovorí, čo by chceli aby prišlo o nejakých 10 rokov neskôr, to jest vlastne dnes/.

Rasterizácia totiž nemá ani šajnu čo sa okolo nej deje, presnejšie povedané, "nevidí" svetlo. Všetko, každú interakciu svetla s objektami, povrchami-materiálmi musíte riadiť manuálne plochu po ploche, pixel po pixely. To sú vlastne tie naše moderné pixel shaders. V skutočnosti programátorské "hacks". Nasvietenie, reflexia, refrakcia, sekundárne tiene, globálnu ilumináciu. Všetko sa iba veľmi orientačne, draho a zdĺhavo napodobňuje. V istom bode - komplexnosti scény - sa tento postup stáva definitívne neefektívnym. Neúnosne drahým.

Hľadáte preto proces, algoritmus, ktorý automaticky generuje správne nasvietenie so všetkými fenoménmi /skatering, GI, tiene, AO, lom svetla, zrkadlové odrazy a mnoho ďalšieho/. Technicky iba štuknete výpínačom a v milisekunde je celá herné scéna automaticky "vyfarbená", niečo čo vám ručne s rasterizáciou bude trvať celé "dni". Dnes do vás ešte nebudem hustiť prečo sa grafická obec špecialistov v poslednom čase prikláňa ku istej variante raytracingu /path tracing - napr. engine Brigade/ ani rozoberať jej nuansy. Na to ešte bude dosť času - path tracing však rieši všetky vyššie spomenuté nedostatky rasterizácie.

Grafický hardvér však nie je navrhnutý s ohľadom na path tracing a nikto k tomu veľkú odvahu nemá. Prvý krok musia urobiť veľký hráči, nie je možné mať GPU - "trochu pannu". Teda lacný čip špičkový v rasterizácii aj path tracingu. Dokonca aj pri PS4 sa "pár sekúnd" uvažovalo vyčleniť časť silikónu práve pre akceleráciu raytracingu, to by však rovnaký krok musela urobiť aj MS konkurencia a tá ako vieme zvolila úplne sociálne rasterizačné GPU na dolnej hranici next gen výkonu.

Problém číslo dva je voľba nového grafického primitíva. Klasický "polygón" je rovnako prekonaná záležitosť ako tu ohováraná rasterizácia. Polygon je nutné textúrovať, svetlo "zfakovať" shader kodom. Manipulácia /deformacia, deštrukcia/ polygonového sveta je krajne neohrabaná a limitne použiteľná. Hladal sa nástupca. Point sampling, splats, bezier patche, voxely a kvantum ďalších obskúrnosti. Doteraz sa myslelo, ze vyhrá línia voxelizácie /opäť je nutná totálna prestavba grafického hárdveru/, avšak aj toto padlo. Dôvod je pragmatický. Všetky bežné herné "svetové" nástroje pre tvorbu grafiky /engine, middlaware, plugins/ by bolo nutne veľmi draho a naraz prepracovať z jedného systému na druhý. A to sa aktuálne považuje za politicky nepriechodné. Rovnako ako keď amerika stále nepoužíva metrický systém alebo anglické teľatá jazdia po zlej strane cesty.

Voxely sú teda kaput, uznal to aj Carmack /iba okrajovo sa budú použivať pri akcelerácii niektorých grafických procesov a ojedinelých herných experimentoch/. Blízka budúcnosť sú podľa všetkého a to nielen herne tzv. mikro polygóny /Reyes/, naďalej rasterizácia, respektíva hybridné rendery v kombinácii s čo najlacnejším path tracingom. Hardvér konzol je samozrejme fixný na dalších 6-8 rokov, do príchodu dalšej generácie, ak nejaká ešte bude však PC GPU technológia bude dotlačená do prechodu na podporu raytracingu na HW úrovni aj preto, lebo tu už niet ďalšej možnosti efektívneho rastu /dnešné 250-300 watt GPU s 2000+ SIMD procesormi má pri zastaralej rasterizácii smiešne nízky koeficient utilizácia použitého silikónu/ a silneje aj dopyt zo strany filmového priemyslu.

V roku 2025 budeme celkom určite hrať hry v grafike akú vidíte zo svojho neumytého okna. Rasterizácia bude mŕtva. Tento pokrok však nastane z čiste pragmatických, ekonomických dôvodov /podobne ako prechod na elektromotory, bifteky zo skúmavky alebo ťažba bridlicových plynov/. Nie preto, že by snáď hráči tento vývoj priamo indukovali, stále predsa spokojne a masovo hrajú COD na archaickom Quake engine. Aktuálna 8. generácia konzol bude zároveň poslednou, ktorá ešte používa rasterizáciu, textúrovanie a štandardné polygóny presne ako prvé 3D hry pred takmer troma desaťročiami. Kruh sa uzatvorí a niekoľko herných veteránov ako ja to zažije v celej jeho kráse /1983-2023/. Snáď tieto zmeny nakopnú aj vývojárov k tomu, aby som po celý ten čas nemusel čumieť na herne stále tie isté jednoduchučke hry, len v lepšej grafike. Alebo mám opäť čakať až sa o to postarajú - pragmaticky ekonomické tlaky.