3. 1. 2013

Mapovanie fotónov


Toť minule som v článku o "tieňoch" v počítačovej grafike napísal, že renderer pre globálnu ilumináciu - GI /hyperrealistické, fyzikálne korektné nasvietenie - šírenie svetla/ dnes napíše aj chromá opica po mrtvici za pár minút. Je to menšia hyperbola, než by ste si mysleli. Najprv však mrknite okom na tie dve obrázky nižšie. Prvý je dnešný spôsob nasvietenia - to jest náhodne plácame farbičky, statické svetielka, gigantické a statické light mapy na každý viditeľný povrch. Práca grafikov je náročná, všetko sa ladí ručne, hra neobsahuje model pre automatizované globálne nasvietenie. To jest, stvorím svet, "zasvietim" svetlo /slnko, alebo iný lokálny zdroj/ a engine mi v reálnom čase a zadarmo, bez námahy všade nahádže nádherné svetlo, tiene, polotiene, ambientné tiene, kaustiku, lom, odrazy, skatering. Všetko toto, ak to vôbec v nejakej dnešnej hre nájdete sa dosahuje neuveriteľne primitívnymi, nepresnými, značne hnusnými, neprirodzenými fake technikami.

Príklad. SSAO /screen space ambient occlussion/. Screen space - mega fuck podvod. Postefekt. AO - ide o akýsi polotieň vrhaný objektami pri nepriamom nasvietení /tieň odrazeného svetla v už zatienenom priestore/. Deus ex /tá šmuha okolo postavy, v pohybe to vyzerá strašne neprirodzene, postefekt je prilepený ku postave a hýbe sa spolu s ňou, nepremieta sa do hĺbky na objekt vedľa/za tou postavou, hnus !!/. Pravý AO jav je však značne výpočetné náročný a len tak mimochodom je "vedľajším" produktom globálnej iluminácie /GI/.


GI - tento postup máte prezentovaný na druhom obrázku. Existuje neskutočne množstvo teórie, druhov, algoritmov pre kvalitnú GI. Je toho plný internet, kvantum prednášok, štúdií, maká sa na tom desaťročia. Osobne už dlho sledujem tzv. photon mapping /druh GI/. Veľmi sľubný postup, ktorý skutočne sleduje pohyb svetelných kvant /fotónov/ prostredím. Viacnásobné odrazy, absorpcia na povrchov, lom na skle, rozptyl svetla. Až donedávno išlo o /ako vždy/ o priam absurdne časovo a teda aj výkonnostne náročný proces. Viac to už neplatí.

Chlapci z Nvidie sa nedávno pochválili svojim solídne optimalizovaným photon mapping kódom, ktorý na NV 670 /podľa fám ide o GPU výkonnostnej triedy konzol ďalšej generácie/ je schopný zvládnuť aj komplexné scény v 1080p rozlíšení s "hrateľnými" framerejtom. Ak to ešte niekto nepochopil - ide naozaj o "pixar" úroveň grafiky, plnú skvelého, prirodzeného svetla a "raytracing" efektov. Všetko s dynamickými zmenami v reálnom čase. Je to oveľa väčší skok v kvalite grafiky ako medzi Gran Turismo pre PSone a PS3. Vizuálna revolúcia.

Pixel Shader /GPU/ ako iste viete je vlastne funkcia, ktorej výsledkom je výpočet polohy a farby pixelu na obrazovke. Jednoduchšiu definíciu už nevymyslím. Pri DOOM 1 s jednoduchým raycasterom sme mali desiatky kalkulácii na pixel, pri DOOM 3 to už boli stovky, dnes tisíce, zajtra desať až pätdesiat krát toľko. Ide len o správny výpočet farby pixelu podľa zadaných kritérii GI renderera /to je vlastne aj ten rozdiel medzi tými dvoma obrázkami vyššie, nie je to o rozlíšení alebo šírke farebnej palety/. PS4 a jej GPU s 1200+ výpočetnými ALUs by nám mala umožniť zbaviť sa tvorby grafiky hier starým, klasickým spôsobom. O pár rokov budete nepochybne zhrozený /ja som už dnes/, keď sa obzriete späť na súčasné grafické pecky ako Suckrim, Biocock, Left for Dad alebo Ass defekt.