"Všetky hry na
Unreal engine vyzerajú veľmi podobne, nesú charakteristickú stigmu". Zamyslel sa niekto z vás nad tým čo presne sa vlastne za tým skrýva. Ide predsa o množštvo hier od rozličných dev tímov, ktoré majú úplne odlišný balík textúr, modelov, prostredie, žáner. Kde je teda ten problém. Samozrejme vo
svetle. Z tohto odkazu asi múdry nikto nebude a ani z môjho podráždeného mumlania o domrdanej
specular zložke
Unreal enginu a žiarivej budúcnosti anizotropné
BRDF a FB renderingu /Physically Based Rendering/. Nastal však čas vám v tom trochu jasno urobiť, ten
wiki článok o svetle vám pekne prežujem. Je to totiž
nasvietenie čo je alfa a omega dobrej grafiky, až potom nasledujú textúry /modifikované svetlom/ a niekde na konci je geometria. Aj to je dôvodom silného dôrazu na
pixel shader výkon dnešných GPU a menšie ignorovanie
vertex časti.
Svetlo je teda elektromagnetické žiarenie /jouly/, ktoré je vďaka časti svojho spektra o istej vlnovej dĺžke viditeľné aj ľudským okom. Definuje ho smer, intenzita, rýchlosť, vlnová dĺžka a polarizácia. S týmto sa bude váš grafický engine potýkať hneď v úvode. Veľmi často najdete v pdfkách herných vývojárov šialené rovnice, nočná mora bežného "matematika a fyzika". Ak si však uvedomíte, že svetlo ako elektromagnetické žiarenie by malo mať nejakú zložku E /elektrické pole/ a B /magnetické pole/ a počuli ste niečo o Maxwellovi, hneď vám bude jasnejšie, že polarizácie je vlastne vzájomný /fázový/ vzťah týchto dvoch veličín, a že aj napnuté lano môže kmitať v dvoch hlavných smeroch /vertikálnom a horizontálnom/.
Prejdeme však ku herne zaujímavejšej téme, ktorá súvisi aj s tým
Unreal enginom v prvom odseku. Interakcia svetla a hmoty. Použijeme patologicky známu fresnelovu rovnicu. Opisuje opäť dve základné vlastnosti - odrazené a prechádzajúce svetlo /elektromagnetická energia/. Odraz je ako vieme daný uhlom dopadu, refrakciou /Snellov zákon/, indexom lomu, vlnovou dĺžkou. Svetlo, ktoré sa od telesa odrazí úplne definuje jeho
spekulárna komponentu. Opakom je prechádzajúce-pohltené svetlo, ktoré sa ďalej týmto prostredím môže šíriť /skatering - chaotická propagácia, absorpcia,
re-emerge/. Dôležité. Mimochodom
re-emerge "znovu objavené" svetlo je vlastne druhou hlavnou zložkou nážho enginu, ktorú poznáte skôr pod názvom
difúzna komponenta /čiastočný odraz/. Fotóny sa môžu vytratiť aj po ceste /herne -
atmosferická vlhkosť, mraky, hmla/ zrážkou s inými časticami /elektróny, ak ich to posunie na vyššiu energetickú hladinu - objekt sa zahrieva/. Opäť veľmi dôležité, lebo sa menia aj jeho "optické" vlastnosti z pohľadu svetla. Kto povedal, že dobrý
lighting model je jednoduchá vec. Fresnelovské koeficienty vlastne hovoria aký je pomer medzi spekulárnou a diffúznou zložkou svetla /čo veľa hovorí o vlastnej podstate materiálu, z ktorého je objekt zložený/ a týmto sa dostávame už len na malý krok ku problému
Unreal enginu.
Wiki v inom článku hovorí. Je úplne jedno, ako dlho budete leštiť golôčku z mramoru, nikdy vám z toho zrkladlo nevznikne, tiež to, že objekt by nemal odraziť viac svetla /energie/ než koľko naňho dopadne. Mudrejším už asi došlo, že za tým bude nejaký háčik v energetickej bilanci a fresnelovej rovnici a majú pravdu. Pre kovové predmety /z ktorých zrkadlo leštením vyrobíte celkom hravo/ totiž platí -
všetko prechádzajúce svetlo je
plne absorbované a z toho vyplýva, že
nemajú difúznu zložku a sú definované iba spekulárnou komponentou !! A tajomstvo materiálov a
Unreal enginu je vám odhalené. Dodám aj to, že spekulárne a diffúzne odrazy majú aj odlišnú polarizáciu a spekulárne odlesky je možné polarizačnými filtrami zo scény odstrániť. Pamätajte aj, že
všetky matariály /nielen tie lesklé/ majú spekulárnu komponentu, aj keď to na prvý pohľad nie je zjavné.
A teraz ta pointa. V hernom engine sa snažíte nejako rozumne /veľmi často hrubo aproximovane/ matematicky popísať obe tieto naše zložky a vzájomné interakcie. Napríklad model pre diffúzne nasvietenie /
Lambert/, alebo spekulárne /
Phong/. Nepochybujem, že o tom druhom ste už niečo počuli, týchto modelov je inak cela kopa /
Blinn-Phong/. Problémom je, že popisujú šírenie svetla iba približne, empiricky, odhadom, vynechaním mnohých výpočetne náročných premenných, tak aby sa to hodilo na väčšinu materiálov, a výpočty boli rýchle a lacné. A vôbec nespomínam to, že svetlo je v sklutočnosti málokedy ideálne izotropné ako naše rovnice /máte plochý predmet, rotujete ním, "mení" sa odraz ?, potom nejde o izotropný povrch/. Naopak fyzikálne vlastnosti svetla /odrazu/ sa menia často podľa smeru, v ktorom tieto vlastnosti meriame !! Ľudské vlasy, hrubšie brúsené materiály - nekonečne množstvo normál, nekonečné variácie odrazy, preto je aj dobrý "model nasvietenie vlasov" tak ťažko realizovateľný. A nie náhodou je súčasťou poslednej
Nv 680 prezentačky !!Ak chceme tomuto bordeľu urobiť koniec, musíme sa pokúsiť o "fyzikálne" korektné nasvietenie /
FB rendering - Physically Based Rendering/. Tu by ste už nemali nájsť modely, kde objekt odráža viac energie, než naňho dopadlo - tu máte svoj nepodarený
Unreal engine. Disproporcie medzi vaším očakávaním, známou realitou a pokriveným surealizmom lesklo slizkých plôch, ktoré tie odlesky zo seba potia ako ježiš krv na kríži. Pri hrani
Bioshocku som nevidel snaď jednu cimru, kde by spekulárna a diffúzna složka bola jakž takž v poriadku. Najnovší
Batman tiež ďaleko neuteká, posledné verzie
Unreal enginu sa snažia aktívne s týmto problémom bojovať, avšak iba staticky. Denný cyklus je pri ich
LightMass technológiu /hlavne difúzne odrazy/ stále nemožný. Budúcnosťou je jasne
FB rendering /o tom vám niečo neskôr extra napíšem
/. Nielen z hľadiska vizuálnej kvality. Je zároveň výrazne lacnejší pre grafikov, vyžaduje ďaleko menej zásahov a korekcií-hackov /čas sú peniaze/, modifikovanie scény je jednoduchšie, dynamické zmeny dennej doby sú samozrejmosťou, anizotropiu ma doslova v duši. Práve kvalita nasvietenia v 2-3 generácii hier pre PS4 by mala byť pre vás tým najväčším vizuálnym šokom /nie textúry, nie modely, nie tiene/. BRDF /
bidirectional reflectance distribution function/ je inak veľmi ohybná funkcia, 4 rozmerný modifikátor - od ideálneho "Lamberta", po komplikované viac "facetové" odrazy na neprehľadných telesách.