CSMR, Vol. 1, No. 1 (2010) [604404]
CSMR, Vol. 1, No. 1 (2010)
Metode interactive de iluminare globala
Lambru P. Andrei-Cristian
Prof. Dr. Ing. Florica Moldoveanu,
Sl. Dr. Ing. Victor, Asavei, Sl. Dr. Ing. Anca Morar
Universitatea POLITEHNICA din Bucuresti
Facultatea de Automatica si Calculatoare
Emails: [anonimizat]
Abstract
Acest document descrie o succesiune de metode interactive de iluminare globala ce se
regasesc in motoarele de joc moderne. De asemenea, acest document descrie in detaliu
tehnica de iluminare indirecta interactiva ce se foloseste de Voxel Cone Tracing ce este in
acest moment in stadiu de cercetare si implementata doar experimental de NVIDIA pe
motorul de joc Unreal Engine 4. La nalul documentului se prezinta progresul realizat in
dezvoltarea unui motor grac pe care se va implementa tehnica de iluminare mentionata
anterior.
Keywords: iluminare globala interactiva, iluminare indirecta, motor grac, Voxel Cone
Tracing, arhitectura software
1. Introducere
Iluminarea globala sau iluminarea indirecta este denumirea generica pentru un set de algo-
ritmi utilizati in graca 3D computerizata ce au scopul de a adauga lumina realista unor
scene 3D. Acesti algoritmi calculeaza pe langa lumina venita direct de la o sursa de lumina
(iluminare directa), dar si lumina re
ectata de alte suprafete din scena, indiferent daca sunt
re
etive sau nu (iluminare indirecta).
Teoretic, re
exiile, refractiile si umbrele sunt toate componente ale iluminarii globale
deoarece cand sunt simulate, un obiect afecteaza desenarea altor obiecte (spre deosebire de
a afectat doar de sursa de lumina directa). In practica, totusi, doar simularea re
exiei
difuze si speculare si distorsionarea lumini sunt componentele ce caracterizeaza iluminarea
globala.
Imaginile desenate folosind un algoritm de iluminare globala apar in majoritatea cazurilor
mai fotorealistice decat daca ar desenate cu algoritmi ce folosesc doar iluminare directa
(Figura 1). Din pacate, totusi, acesti algoritmi sunt mult mai complecsi din punct de vedere
computational si au o viteza de desenare mult mai mica. O abordare destul de comuna este
sa se foloseasca un pas de preprocesare in care se calculeaza iluminarea globala si se pas-
treaza direct in geometrie (tehnica "radiosity"). Acele informatii stocate pot ulterior
utilizate sa se genereze imagini din orice punct de observatie din scena fara pasul costisitor
de recalculare a luminii.
Lambru Cristian Metode interactive de iluminare globala.
Figure 1: In stanga este prezentat un cadru din lmul de animatie "Toy Story 3". In
dreapta este prezentata doar componenta de iluminare indirecta din imaginea
stanga. Se poate observa in imaginea din stanga ca acea componenta directa este
foarte importanta pentru aspectul nal al cadrului.
2. Iluminarea globala in motoarele de joc moderne
In mod obisnuit, jocurile video si alte aplicatii ce necesita desenare in timp real au fost
limitate doar la iluminare directa, din moment ce calculale necesare iluminarii indirecte
erau prea costisitoare si durau prea mult timp pentru desenare, astfel ca aceasta era folosita
doar in aplicatii oine asa cum sunt CGI-ul din lmele de animatie (Figura 1).
Modul in care aceasta tehnica a fost introdusa in jocurile video s-a limitat la calcularea
iluminarii indirecte doar pentru obiectele si suprafetele care nu se miscau niciodata (statice).
In acest mod calculele incete erau efectuate oine si atat timp cat obiectele precalculate nu
se miscau niciodata, iluminarea indirecta precalculata era reprezentata corect in timp real
la rularea jocului.
Radiosity, Ray Tracing, Beam Tracing, Cone Tracing, Path Tracing, Metropolis Light
Transport, Ambient Occlusion, Photon Mapping si Image Based Lighting sunt exemple ale
unor astfel de algoritmi folositi la iluminarea globala, cativa putand folositi chiar impreuna
pentru a obtine rezultate mult mai apropiate de modelul din natura.
2.1 Unity 3D
Conform propriei documentatii de pe site-ul ocial al motorului grac, Unity 3D pana la
versiunea 5.0 suporta doua tipuri de tehnici de iluminare globala, ambele ind oine.
Versiunile inainte de 5.0 suporta o tehnica numita Baked GI (cunoscuta ca si Baked
Lightmaps). Aceasta presupune preprocesarea luminii indirecte si pastrarea acesteia direct
in geometria scenei. Aceasta tehnica se foloseste de avantajul preprocesarii de a avea la
indemana o perioada de timp foarte lunga pentru a genera umbre mai realiste, umbre care
in mod normal nu se pot obtine in timp real cu tehnicile cunoscute [1].
In plus, Unity 5.0 adauga suport pentru o noua tehnica numita Precomputed Realtime
GI. Aceasta necesita de asemenea inca un pas de preprocesare similar cu cel mentrionat
la punctul anterior, dar acesta nu precalculeaza direct modul in care cade lumina in scena
in timp real, ci precalculeaza toate posibilele directii de respingere a luminii si pastreaza
aceasta informatie pentru a folosita in timp real.
CSMR – Computer Science Master Research, Vol. 1, No. 1 (2010)
Mai exact, pentru toate obiectele statice din scena se pastreaza informatie care raspunde
la intrebarea "dupa una sau mai multe raze de lumina ajung pe suprafata, care sunt directiile
pe care le vor avea razele respective". La nal, in timpul rularii, iluminarea globala este
realizata oferind efectiv razele respective de lumina din planul virtual al observatorului spre
obiectele precalculate din scena.
Aceasta tehnica are avantajul ca desenarea scenelor cu ajutorul ei sunt independente de
numarul, tipul, pozitia, directia si alte proprietati ale razelor de lumina. Astfel luminile se
pot modica in timp real . Similar este posibil sa se modice, tot in timp real si proprietatile
de material al obiectelor (culorile difuze, speculare, re
etivitatea, transparenta, distorsia)
[1] .
Ambele tehnici, atat Baked GI cat si Precomputed Realtime GI, au limitarea de a
include in precalcularile efectuate doar obiectele statice din scena, deci miscarea obiectelor
dinamice, pentru care nu s-a precalculat lumina, nu vor benecia de calcularea in timp real
a razelor de lumina spre si dinspre celelalte obiecte din scena, e ele statice sau dinamice.
Totusi, se poate trece peste aceste limitari daca se precalculeaza oine razele de lumina
din obiectele statice si se pastreaza ca Light Probes. Acestea sunt pozitii in scene unde s-a
masurat intensitatea luminii la pasul de preprocesare. In timpul rularii, lumina indirecta
care atinge obiectele dinamice se aproximeaza folosind cea mai aproape pozitie din cele in
care s-a precalculat intensitatea luminii.
Deci, spre exemplu, in loc sa se calculeze lumina re
ectata de o suprafata statica spre
o suprafata dinamica, se va aproxima culoarea luminii care ar trebui sa se re
ecte din acea
suprafata folosind o mostra de lumina ce provine de la acea suprafata statica la un pas de
preprocesare.
2.2 Unreal Engine 4
Motorul grac Unreal Engine 4 pune la dispozitie atat tehnici de precalculare a iluminarii
globale cat si tehnice de calculare a acesteia in timp real.
Pentru precalcularea iluminarii globale se foloseste o tehnica numita Lightmass Global
Illumination. Aceasta creeaza texturi de lumina cu interactii complexe ale luminii, precum
sunt umbrele si interre
exia difuza. Este folosita pentru a precalcula portioni din contributia
luminii adusa de sursele de lumina statice.
Interre
exia Difuza reprezinta defapt re
exita razelor de lumina calculate pe baza propri-
etatilor de material care spun cat de multa lumina si culoare se re
ecta in toate directiile.
Aceasta operatie reprezinta efectul invers care se petrece in natura, mai exact razele de
lumina nu sunt trimise din sursele de lumina, ci sunt trimise din planul virtual al obser-
vatorului pentru a aduna tentele de culoare pe care le intalneste in suprafetele re
ectate
[2].
Pentru realizarea in timp real a iluminarii globale, Unreal Engine 4 pune la dispozitie
doar ca aspect de dezvoltare, deci nu ca produs nal pentru industrie, o tehnica numita
Light Propagation Volumes.
Aceasta tehnica se bazeaza pe ideea ca obiectele propaga lumina in jurul lor cam in
acelasi mod in care se propaga caldura in functie de volum, masa si proprietatile de material.
Propagation Volumes se refera ca exista un volum stabilit pentru ecare obiect in care se
propaga lumina [3].
Lambru Cristian Metode interactive de iluminare globala.
3. Interactive Indirect Illumination using Voxel Cone Tracing
Pentru a calcula iluminarea globala in timp real s-au dezvoltat mai multi algoritmi care
aproximeaza luminozitatea calculata de exemplu pentru Radiosity. Dintre acestea, cea
care este populara in industrie in acest moment este Voxel Global Illumination, VXGI [4],
propusa de NVIDIA si implementata si demonstrata tot de ei pe motorul Unreal Engine 4.
Aceasta tehnica se bazeaza pe propunerea lui Cyril Crassin, Fabrice Neyret, Miguel Sainz,
Simon Green si Elmar Eisemann din 2011, numita Interactive Indirect Illumination using
Voxel Cone Tracing [5].
3.1 Descriere
Aceasta tehnica lucreaza in 3 etape.
Transforma toata geometria din scena in Voxeli pe care ii pastreaza intr-un Octree.
Fiecare frunza din arbore va reprezenta un voxel. Acest proces se face pe placa video
folosind pipeline-ul de rasterizare prin desenarea scenei de-alungul celor 3 axe de coordonate
si pastrand mipmap-uri. In acest mod Octree-ul este adaptiv si se modica la ecare frame.
Se genereaza un numar acceptabil de raze ce pornesc din ecare fragment, pe directia
data de un numar rezonabil de mic de conuri (5).
Razele vor face un numar acceptabil de bounce-uri in voxelii pastrati in interiorul Octree-
ului (2) preluand culorile acestora pe baza distantelor parcuse, in acest mod se creeaza
iluminarea difuza indirecta. La nal se compun toate aceste culori si se compun cu culoarea
obtinuta prin metoda clasica de rasterizare.
Aceasta metoda nu inlocuieste pipeline-ul de rasterizare, doar il imbunatateste functio-
nand ca un al doilea pas de procesare. De altfel tehnica se implementeaza folosind deferred
rendering.
Aceasta tehnica suporta lumini dinamice, umbre, ambient occlusion si multe alte efecte
care inlocuiesc practic tot cuantumul de efecte prezentat in paginile anterioare.
3.2 Avantaje
Scene realist desenate in timp real cu o calitate mai buna chiar si a unor motoare de joc
folosite activ in momentul de fata in lumea Game Development-ului, precum Unity.
Figure 2: Conurile ce dau directia razelor pentru calcularea luminii.
CSMR – Computer Science Master Research, Vol. 1, No. 1 (2010)
Figure 3: Demonstrarea capacitatii motorului grac. Toate entitatile solide din scena sunt
desenate la pasul de deferred rendering, iar ninsoarea creata sub forma de sistem
de particule si frame counter-ul din coltul stanga-jos al ecranului sunt desenate
la pasul de forward rendering.
4. Lite Engine
Se doreste implementarea iluminarii globale pe un motor grac deja existent, creat de
autorul acestei lucrari ca proiect personal, numit Lite Engine. In acest moment motorul
grac este compus din urmatoarele module.
4.1 Resource Management
Motorul de joc are un sistem de management de resurse care se bazeaza pe clasa principala
(manager) si pe diferiti actori specializati in incarcarea diferitelor tipuri de date necesare
motorului (Wavefront Objects, Texturi, Atlase, Texture Cubemap, Fonts, Materiale) si de
asemenea tipuri specice motorului de joc (Lights, Particle Systems, Skyboxes)
4.2 Text GUI
S-a implementat textul ca si componenta a sistemului de GUI pentru a putea folosit la
asarea informatiilor de debug pe ecranul aplicatiei, necesar in procesul de dezvoltare al
sistemului de iluminare.
4.3 Sistem de particule
De asemenea, s-a implementat prima componenta de nivel inalt al motorului de joc si anume
ParticleSystem-ul. Sistemul de particule prezent este sucient de generic pentru a putea
folosit la crearea de efecte foarte diverse: foc, fum, articii, ploaie, ninsoare, tail rendering.
Lambru Cristian Metode interactive de iluminare globala.
4.4 Skybox
Pentru o mai mare generalitate a componentelor motorului grac s-a extins tipul de data
Skybox pentru a accepta mai multe proprietati. Se poate modica brightness-ul cerului,
tenta de culoare sau rotatia cubului specic skybox-ului, astfel incat sa se creeaza efectul
de miscare a norilor de pe cer (este util in anumite circumstante).
4.5 Rendering System
Sistemul de desenare permite introducerea de tehnici, metode si tehnici noi de desenare
cu un efort cat mai scazut din partea programatorului. Sistemul lucreaza in doua etape.
Prima etapa este de deferred rendering, iar cea de-a doua este de forward rendering.
4.6 Deferred Rendering
Primul pas de desenare se face deferred. Aici se iau toate obiectele care contin un renderer
specializat pentru acest pas si se sorteaza in ordinea prioritatii de desenare. Procesul este
compus din doua faze, prima este desenarea geometriei intr-un framebuer cu 4 atasamente
(pozitii, normale, culoare difuza si culoare speculara). A doua faza reprezinta reuniunea
celor 4 atasamente intr-o singura imagine peste care se suprapun efectele de iluminare,
calculate momentan cu lumini volumetrice.
4.7 Forward Rendering
Dupa pasul de deferred rendering se mai face un pas de forward rendering in care se de-
seneaza pur si simplu restul obiectelor din scena ce nu trebuiesc afectate de lumina. La
aceasta etapa nu se poate tine cont de informatiile luminilor (pozitie, culoare, directie de
iluminare), dar este utilizat pentru desenarea sistemelor de particule si a GUI-ului.
CSMR – Computer Science Master Research, Vol. 1, No. 1 (2010)
Figure 4: Arhitectura sistemului de desenare. Fiecare obiect derivat din Renderer va con-
tine etapa la care se aplica (deferred sau forward). In cazul de fata, clasa
Model3DRenderer se deseneaza la pasul de deferred, iar TextGUIRenderer si
ParticleSystemRenderer se deseneaza la pasul de forward..
Lambru Cristian Metode interactive de iluminare globala.
References
[1] Unity3D online documentation,
http://docs.unity3d.com/Manual/GIIntro.html
[2] Unreal Engine 4 online documentation,
https://docs.unrealengine.com/latest/INT/Engine/Rendering/
LightingAndShadows/Lightmass/index.html
[3] Unreal Engine 4 light propagation volume online documentation,
https://docs.unrealengine.com/latest/INT/Engine/Rendering/
LightingAndShadows/LightPropagationVolumes/index.html
[4] NVIDIA VXGI Dynamic Global Illumination Inside Unreal Engine 4. Source:
http://byzantos.com/nvidia-vxgi/
[5] Cyril Crassin, Fabrice, Neyret, Miguel Sainz, Simon Green, Elmar Eisemann Interac-
tive Indirect Illumination Using Voxel Cone Tracing . Pacic Graphics 2011, Volume 30
(2011), Number 7.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: CSMR, Vol. 1, No. 1 (2010) [604404] (ID: 604404)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
