ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
Diplomov´a pr´ace
Analytick´ y model pro rozptyl svˇ etla v mlze Jan Ondˇrej
Vedouc´ı pr´ace: Ing. Jaroslav Kˇriv´anek, Ph.D.
Studijn´ı program: Elektrotechnika a informatika dob´ıhaj´ıc´ı magistersk´ y Obor: Informatika a v´ ypoˇcetn´ı technika leden 2007
Podˇ ekov´ an´ı Na tomto m´ıstˇe chci podˇekovat Jaroslavu Kˇriv´ankovi za odborn´e veden´ı, cenn´e pˇripom´ınky a trpˇelivost pˇri tvorbˇe t´eto pr´ace. D´ale bych r´ad podˇekoval rodinˇe a pˇr´atel˚ um za mor´aln´ı podporu a uˇziteˇcn´e rady. iii
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´akon).
V Praze dne 19.1. 2007
.............................................................
v
Abstract In this work I present an analytical model for single scattering in participating media. This model is suitable for spotlights with piece-wise constant intensity dependence on angle. I start from an existing method, which is working for point lights [32], and extend it so that it works with spotlights. The transport equation have several analytic terms and few 2D table lookups. I implemented the final algorithm as a fragment shader in programmable graphics processing unit (GPU) and stored the tables as 2D textures. I achieve real-time framerate. The algorithm is linearly dependent on the number of spotlights and also on the resolution of the image. The implementation as a shader makes it possible to use my algorithm in current interactive applications without major modification of the rendering engine architecture.
Abstrakt V t´eto pr´ace prezentuji analytick´ y model pro rozptyl svˇetla v opticky aktivn´ım prostˇred´ı. Tento model je urˇcen pro bodov´a svˇetla typu reflektor s po ˇca´stech konstantn´ı z´avislost´ı intenzity na u ´hlu. Pouˇzil jsem existuj´ıc´ı metodu funguj´ıc´ı pro bodov´a svˇetla s konstantn´ı intenzitou (point light) [32] a rozˇs´ıˇril jsem ji tak, aby fungovala i pro reflektor (spotlight). Transportn´ı rovnice je vyj´adˇrena nˇekolika analytick´ ymi ˇcleny a zbyl´e integr´aly jsou pˇredpoˇc´ıtan´e ve formˇe 2D tabulek. V´ ysledn´ y algoritmus jsem pot´e implementoval jako st´ınovac´ı program (angl. shader) v GPU a pˇredpoˇc´ıtan´e tabulky jsem uloˇzil ve formˇe 2D textur. T´ım jsem dos´ahl interaktivn´ı rychlosti vykreslen´ı sc´eny, kter´a je line´arnˇe z´avisl´a na poˇctu svˇetel ve sc´enˇe. Implementace ve formˇe st´ınovac´ıho programu umoˇzn ˇuje, s mal´ ymi u ´pravami vykreslovac´ıho ˇretˇezce, pouˇzit´ı tohoto algoritmu ve st´avaj´ıc´ıch interaktivn´ıch aplikac´ıch.
vii
Obsah ´ 1 Uvod
1
2 Pˇ redchoz´ı pr´ ace
4
3 Teorie 3.1 Obecn´ y z´aklad . . . . . . . . . 3.2 Model pro single scattering . . . 3.3 Airlight integr´al . . . . . . . . . 3.4 Vliv rozptylu na povrch objektu
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
6 6 8 9 12
4 Implementace
16
5 V´ ysledky
20
6 Z´ avˇ er
28
7 Seznam literatury
29
A Obsah pˇ riloˇ zen´ eho CD
33
ix
Seznam obr´ azk˚ u 1.1 1.2
Pˇr´ıklad sc´eny s mlhou a bez mlhy. . . . . . . . . . . . . . . . . . . . . . . Postup svˇetla opticky aktivn´ım prostˇred´ım. . . . . . . . . . . . . . . . . .
1 2
2.1 2.2
Sc´ena ulice v mlze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Obr´azek auta v mlze. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 5
3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10
Jevy vznikaj´ıc´ı pˇri pr˚ uchodu paprsku opticky aktivn´ım prostˇred´ım. Pˇr´ıklad dvou typ˚ u f´azov´e funkce. . . . . . . . . . . . . . . . . . . . Ilustrace k integr´aln´ı transportn´ı rovnici. . . . . . . . . . . . . . . . Svˇetlo se z´avislost´ı intenzity na u ´hlu. . . . . . . . . . . . . . . . . . Popis oznaˇcen´ı v obr´azku 3.6. . . . . . . . . . . . . . . . . . . . . . Diagram postupu svˇetla m´ediem. . . . . . . . . . . . . . . . . . . . Graf funkce F(u,v). . . . . . . . . . . . . . . . . . . . . . . . . . . Popis oznaˇcen´ı v obr´azku 3.9. . . . . . . . . . . . . . . . . . . . . . Diagram popisuj´ıc´ı dopadaj´ıc´ı svˇetlo na povrch objektu v m´ediu. . . Graf funkce G0 (u, v) a G20 (u, v). . . . . . . . . . . . . . . . . . . .
. . . . . . . . . .
6 7 7 9 10 11 12 13 13 14
4.1 4.2 4.3
Zdrojov´ y k´od funkce IntersectionPoints(). . . . . . . . . . . . . . . . . . . Zdrojov´ y k´od funkc´ı pro v´ ypoˇcet osvˇetlen´ı podle rovnice 3.5. . . . . . . Zdrojov´ y k´od vstupn´ı funkce main(). . . . . . . . . . . . . . . . . . . . .
17 18 19
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8
Sn´ımky zachycuj´ıc´ı sc´enu s r˚ uznou hustotou mlhy. . . . . . . . . . . . . . Vliv rozptylu na dif´ uzn´ı sloˇzku. . . . . . . . . . . . . . . . . . . . . . . . Vliv rozptylu na zrcadlovu sloˇzku. . . . . . . . . . . . . . . . . . . . . . . Porovn´an´ı m´eho modelu a modelu z ˇcl´anku [32]. . . . . . . . . . . . . . . Svˇetla z obr´azku 5.4 pouˇzit´a v jedn´e sc´enˇe. . . . . . . . . . . . . . . . . Z´avislost poˇctu sn´ımk˚ u za sekundu na rozliˇsen´ı sn´ımku (Graf k tabulce 5.2). Sn´ımky s nˇekolika reflektorov´ ymi svˇetly s r˚ uznou hustotou mlhy. . . . . . Nˇekolik pohled˚ u na sc´enu s autem. . . . . . . . . . . . . . . . . . . . . .
20 21 22 23 24 25 26 27
xi
. . . . . . . . . .
. . . . . . . . . .
´ KAPITOLA 1. UVOD
1
´ 1 Uvod Pro realistick´e zobrazen´ı sc´eny s opticky aktivn´ım prostˇred´ım, jako napˇr´ıklad mlha, kouˇr, mraky, je potˇreba simulovat n´aroˇcn´e fyzik´aln´ı a optick´e efekty. Mezi d˚ uleˇzit´e efekty patˇr´ı rozptyl svˇetla. Ten nast´av´a pˇri pr˚ uchodu svˇetla aktivn´ım prostˇred´ım jako je mlha nebo kouˇr. Mezi hlavn´ı projevy tohoto efektu patˇr´ı z´aˇre kolem svˇeteln´ ych zdroj˚ u, rozostˇren´ı odraz˚ u na leskl´ ych ploch´ach, zjemnˇen´ı st´ın˚ u a osvˇetlen´ı tmav´ ych oblast´ı. Pˇrid´an´ım tˇechto efekt˚ u do sc´eny se znaˇcnˇe pˇribl´ıˇz´ıme skuteˇcnosti a je mnoho aplikac´ı, kter´e je potˇrebuj´ı. Oblasti, ve kter´ ych se jich vyuˇz´ıv´a jsou napˇr´ıklad hry a virtu´aln´ı realita, vojensk´e u ´ˇcely nebo aplikace pro v´ yuku ˇridiˇc˚ u [30]. Bohuˇzel je simulace tˇechto efekt˚ u n´aroˇcn´a na v´ ypoˇcet a je potˇreba si vybrat mezi kvalitou nebo rychlost´ı. Pro zobrazen´ı ve vysok´e kvalitˇe existuje nˇekolik metod Monte Carlo a koneˇcn´ ych prvk˚ u [13, 22, 18, 9, 19]. Tyto metody mohou simulovat velice komplexn´ı a n´aroˇcn´e efekty, jsou ale velmi pomal´e a vykreslen´ı sc´eny m˚ uˇze trvat i nˇekolik hodin. Na rozd´ıl od pˇredeˇsl´ ych metod existuj´ı metody, kter´e bˇeˇz´ı v re´aln´em ˇcase, ale sc´ena vykreslen´a pomoc´ı nich zdaleka nezobrazuje vˇsechny efekty zp˚ usoben´e rozptylem svˇetla. Tyto metody simuluj´ı jen jeden nebo nˇekolik m´alo efekt˚ u popsan´ ych v´ yˇse. Nejjednoduˇsˇs´ı zp˚ usob, jak simulovat mlhu, je zahrnout pouze u ´tlum svˇetla zp˚ usoben´ y nˇekolikan´asobn´ ym rozptylem v z´avislosti na vzd´alenosti svˇetla od pozorovatele. Takto je napˇr´ıklad implementov´ana mlha v OpenGL, kter´a se poˇc´ıt´a automaticky na grafick´e kartˇe.
Obr´azek 1.1: Na obr´azc´ıch je vidˇet sc´ena s reflektorem. Nalevo je sc´ena bez mlhy, napravo je potom tato sc´ena v mlze vykreslen´a modelem z t´eto pr´ace. S rozvojem programovateln´ ych grafick´ ych akceler´ator˚ u se podaˇrilo v´ yraznˇe zv´ yˇsit kvalitu zobrazovan´e sc´eny, pˇrid´an´ım efekt˚ u, kter´e nebylo dˇr´ıve moˇzn´e v re´aln´em ˇcase zobrazit. Bohuˇzel ani d´ıky tomu nelze dnes u ´pln´ y model rozptylu svˇetla v interaktivn´ıch aplikac´ıch pouˇz´ıt. Proto se hledaj´ı jednoduˇsˇs´ı modely, kter´e by byly interaktivn´ı a z u ´pln´eho modelu zobrazily co moˇzn´a nejv´ıce efekt˚ u. V posledn´ı dobˇe se objevilo nˇekolik
´ KAPITOLA 1. UVOD
2
model˚ u [4, 32, 33], kter´e u ´spˇeˇsnˇe implementovaly zjednoduˇsen´ y rozptyl svˇetla, a umoˇznily v re´aln´em ˇcase zobrazit komplexn´ı sc´eny. V t´eto pr´aci se budu zab´ yvat zjednoduˇsen´ ym modelem rozptylu svˇetla, kde budu br´at v u ´vahu pouze paprsek svˇetla, kter´ y se po prvn´ım rozptylu odraz´ı pˇr´ımo do kamery (Obr´azek 1.2). Tento model je pouze aproximac´ı u ´pln´eho modelu, ale ve spoustˇe situac´ı je dostateˇcn´ y a pro n´ızk´e hodnoty koeficientu rozptylu (ˇr´ıdk´a mlha) i pomˇernˇe pˇresn´ y [32]. Na obr´azku 1.2 je vidˇet nˇekolik d˚ uleˇzit´ ych jev˚ u, kter´e vznikaj´ı pˇri pr˚ uchodu svˇetla opticky aktivn´ım prostˇred´ım, a je tˇreba br´at je v u ´vahu i pro v´ yˇse uveden´ y zjednoduˇsen´ y model. Obr´azek 1.2(a) zobrazuje sc´enu, kde ˇza´dn´ y rozptyl nenast´av´a. Svˇetlo putuje ze zdroje nebo od objektu k pozorovateli pˇr´ımo, nast´av´a pouze u ´tlum na z´akladˇe vzd´alenosti od pozorovatele. Toto je zp˚ usob v´ ypoˇctu mlhy v OpenGL. Obr´azek 1.2(b) pˇredstavuje jeden z nejd˚ uleˇzitˇejˇs´ıch a nejviditelnˇejˇs´ıch jev˚ u, kter´e nast´avaj´ı. T´ım je z´aˇre kolem zdroje svˇetla (glow), kter´a vznik´a dopadem svˇetla do oka pozorovatele z r˚ uzn´ ych smˇer˚ u. To je zapˇriˇcinˇeno alespoˇ n jedn´ım rozpt´ ylen´ım svˇetla mezi zdrojem a pozorovatelem. Toto nast´av´a i mezi zdrojem svˇetla a povrchem objektu (Obr´azek 1.2(c)). V tomto pˇr´ıpadˇe se svˇetlo rozpt´ yl´ı a rozostˇr´ı se zrcadlov´e a leskl´e odrazy na povrchu objektu. Dalˇs´ım d˚ usledkem je zesvˇetlen´ı tmav´ ych ˇc´ast´ı objektu, kter´e nejsou osvˇetleny pˇr´ımo. Posledn´ı obr´azek 1.2(d) pˇrid´av´a jeˇstˇe rozptyl svˇetla odraˇzen´eho od povrchu objektu, coˇz zp˚ usob´ı sn´ıˇzen´ı intenzity odraˇzen´eho svˇetla, a zesvˇetlen´ı a rozmaz´an´ı objektu.
(a)
(b)
(c)
(d)
Obr´azek 1.2: Diagramy ukazuj´ı, jak svˇetlo putuje skrz opticky aktivn´ı prostˇred´ı k pozorovateli.
´ KAPITOLA 1. UVOD
3
V ˇcl´anku [32] uvedli autoˇri model, kter´ y odpov´ıd´a obr´azku 1.2(c), ale omezili se pouze na izotropn´ı bodov´e svˇetlo (intenzita stejn´a ve vˇsech smˇerech). Dalˇs´ımi omezen´ımi byl pˇredpoklad homogenn´ıho prostˇred´ı a neuvaˇzov´an´ı volumetrick´ ych st´ın˚ u. Tato pr´ace z nˇeho vych´az´ı a rozˇsiˇruje ho o moˇznost pouˇzit´ı svˇetel s po ˇca´stech konstantn´ı u ´hlovou z´avislost´ı intenzity. Pˇr´ınosem t´eto pr´ace je: • Analytick´y model rozptylu svˇetla v mlze pro reflektor: Bˇeˇzn´ y v´ ypoˇcet rozptylu svˇetla je zaloˇzen na numerick´em sˇc´ıt´an´ı pˇr´ıspˇevk˚ u jasu pod´el paprsku, to je ale st´ale velice pomal´e. V ˇcl´anku [32] se toto podaˇrilo vyˇreˇsit pro bodov´a svˇetla, ale pro v´ ypoˇcet reflektoru (spotlight) zat´ım podobn´e ˇreˇsen´ı nen´ı. Pˇr´ınosem t´eto pr´ace je rozˇs´ıˇren´ı tohoto modelu pr´avˇe pro reflektorov´a svˇetla v homogen´ım isotropn´ım prostˇred´ı. • Hardwarov´ a implementace: Tento model je stejnˇe jako v [32] implementov´an s vyuˇzit´ım programovateln´ ych grafick´ ych akceler´ator˚ u. To se podaˇrilo zjednoduˇsen´ım integr´alu na ˇradu jednoduch´ ych analytick´ ych rovnic a nˇekolika 2D funkc´ı, kter´e se daj´ı pˇredpoˇc´ıtat do tabulky. V´ ysledn´ y algoritmus lze implementovat v podobˇe st´ınovac´ıho programu s nˇekolika pˇr´ıstupy do 2D textur, ve kter´ ych jsou uloˇzeny pˇredpoˇc´ıtan´e 2D funkce. C´ılem t´eto pr´ace je navrhnout algoritmus, kter´ y bude umoˇzn ˇovat zobrazen´ı sc´eny s aktivn´ım prostˇred´ım a se svˇetly, kter´a maj´ı po ˇc´astech konstantn´ı z´avislost intenzity na u ´hlu (reflektor), pˇri zachov´an´ı interaktivn´ı rychlosti. Abych toho dos´ahl, omezil jsem se na homogenn´ı prostˇred´ı, pˇri rozptylu svˇetla beru v u ´vahu model zobrazen´ y na obr´azku 1.2(c) a neuvaˇzuji volumetrick´e st´ıny. D´ıky implementaci jako st´ınovac´ı program se d´a moje metoda zaˇclenit do vˇetˇsiny aplikac´ı bez vˇetˇs´ıch zmˇen v jejich architektuˇre. S intenzivn´ım vyuˇzit´ım grafick´eho hardwaru a s n´ızk´ ymi n´aroky na texturovac´ı pamˇeˇt je moje metoda schopna zobrazovat komplexn´ı sc´enu ve vysok´em rozliˇsen´ı pˇri zachov´an´ı vysok´eho poˇctu sn´ımk˚ u za sekundu, a d´a se tak vyuˇz´ıt i v interaktivn´ıch aplikac´ıch (Obr´azek 1.1). Kapitola 2 popisuje nˇekter´e pr´ace, kter´e se zab´ yvaj´ı simulov´an´ım efekt˚ u v otpicky aktivn´ım prostˇred´ı, ve 3 kapitole je pops´ana teorie k ˇs´ıˇren´ı svˇetla v opticky aktivn´ım prostˇred´ı a je zde tak´e pˇredstaveno m´e rozˇs´ıˇren´ı metody z [32], 4 kapitola je o implementaci m´e metody v podobˇe st´ınovac´ıho programu a v 5. kapitole je zhodnocen´ı a na pˇr´ıkladech jsou uk´az´any efekty, kter´e m´a metoda simuluje.
ˇ ´I PRACE ´ KAPITOLA 2. PREDCHOZ
4
2 Pˇ redchoz´ı pr´ ace Simulace pr˚ uchodu svˇetla opticky aktivn´ım prostˇred´ım je jiˇz dlouh´a l´eta v´ yzvou a je o n´ı naps´ano mnoho literatury. Tuto literaturu lze rozdˇelit na metody simuluj´ıc´ı efekty, kter´e vznikaj´ı pˇri mnohon´asobn´em rozptylu svˇetla (multiple scattering), a na ty, co se omezuj´ı pouze na prvn´ı rozptyl (single scattering). Prvn´ım kdo se zab´ yval simulac´ı rozptylu svˇetla v m´ediu byl v roce 1982 Blinn [2]. Na nˇeho pot´e v n´asleduj´ıc´ıch letech nav´azali dalˇs´ı, kteˇr´ı se v pˇrev´aˇzn´e vˇetˇsinˇe zab´ yvali prvn´ım typem metod. Komplexn´ı pˇrehled vˇsech metod je pops´an v ˇcl´anku [3]. V´ ypoˇcet mnohon´asobn´eho rozptylu svˇetla vytv´aˇr´ı u ´ˇzasn´e a skuteˇcnˇe vypadaj´ıc´ı efekty a metody jeho v´ ypoˇctu lze rozdˇelit na deterministick´e (zaloˇzen´e na numerick´em v´ ypoˇctu) [13, 18, 31, 25, 27, 28] a stochastick´e (vyuˇz´ıvaj´ı n´ahodn´eho vzorkov´an´ı) [1, 24, 23, 5, 10, 16] (Obr´azek 2.2). D´ıky jejich vysok´emu realismu je jejich v´ ypoˇcet ˇcasovˇe n´aroˇcn´ y a vykreslen´ı jedn´e sc´eny m˚ uˇze trvat i nˇekolik hodin. Tyto metody nejsou pro potˇreby interaktivn´ıch aplikac´ı pouˇziteln´e. Proto se hned zpoˇc´atku objevily tak´e metody, kter´e vyˇsetˇruj´ı pouze prvn´ı rozptyl svˇetla [22, 15, 17] (Obr´azek 2.1).
Obr´azek 2.1: Sc´ena ulice v mlze z [22].
S v´ yvojem programovateln´ ych grafick´ ych akceler´ator˚ u se objevily metody, kter´e znaˇcnˇe urychluj´ı numerick´e v´ ypoˇcty. Pˇrestoˇze nˇekter´e z tˇechto metod znaˇcnˇe sn´ıˇzily ˇcas v´ ypoˇctu vykreslen´ı sn´ımku, nejsou tyto metody vhodn´e pro vˇsechny typy interaktivn´ıch aplikac´ı, jako napˇr´ıklad hry. V ˇcl´anku [4] je pˇredstavena metoda zaloˇzen´a na v´ıcepr˚ uchodov´em vykreslen´ı sc´eny, kter´a pouˇz´ıv´a grafick´ y hardware pro sˇc´ıt´an´ı pˇr´ıspˇevk˚ u radiance po rovin´ach, podobnˇe jako v objemov´em vykreslov´an´ı. Tyto metody jsou vˇetˇsinou zamˇeˇreny pouze na urˇcit´ y typ efekt˚ u, jako jsou mraky, a mohou tak vyuˇz´ıt pˇredpoˇc´ıt´an´ı nˇekter´ ych parametr˚ u prostˇred´ı a v´ıcepr˚ uchodov´ ych technik. D´ıky tomu mohou tyto metody vykreslovat neizotropn´ı nebo nehomogenn´ı prostˇred´ı [4, 7, 12]. Tyto metody maj´ı ale vˇetˇsinou i sv´a omezen´ı, jako jsou napˇr´ıklad nepohybliv´a svˇetla. D´ale tak´e ˇcasto vyuˇz´ıvaj´ı 3D textury pro rozm´ıstˇen´ı m´edia v prostoru a kvalita sn´ımku je pak
ˇ ´I PRACE ´ KAPITOLA 2. PREDCHOZ
5
Obr´azek 2.2: Auto bez mlhy (vlevo) a v mlze (vpravo) z [16].
z´avisl´a na jejich rozliˇsen´ı. Dalˇs´ım zp˚ usobem jak rychle vykreslit sc´enu s opticky aktivn´ım prostˇred´ım je nalezen´ı analytick´eho modelu. Objevilo se nˇekolik metod zab´ yvaj´ıc´ıch se podpovrchov´ ym rozptylem [6, 11]. Tyto modely jsou ale omezeny pˇredpokladem, ˇze je svˇetlo a pozorovatel mimo m´edium a nejsou proto pouˇziteln´e pro mlhu nebo kouˇr, kde se obvykle pozorovatel i svˇeteln´ y zdroj nach´azej´ı uvnitˇr m´edia. Podobnˇe jsou na tom i analytick´e modely pro rozpyl svˇetla na obloze [26, 8, 20]. Existuj´ı tak´e analytick´e modely pro z´aˇri kolem bodov´ ych svˇeteln´ ych zdroj˚ u (airlight) v homogenn´ım prostˇred´ı [21, 33, 32]. D´ıky tˇemto metod´am m˚ uˇze b´ yt tento efekt pouˇzit v interaktivn´ıch aplikac´ıch. Nˇekter´e z tˇechto metod maj´ı ale sv´a omezen´ı. Metoda v [21] nen´ı u ´plnˇe korektn´ı pro objekty uvnitˇr m´edia a pro ˇr´ıdkou mlhu, metoda z ˇcl´anku [33] pouˇz´ıv´a pro rozptyl polynomi´aln´ı aproximaci, coˇz generuje nepˇresn´e v´ ysledky v bl´ızkosti svˇetel. Analytick´ y model z [32] tyto probl´emy nem´a a nav´ıc zahrnuje vliv rozpt´ ylen´eho svˇetla na porvch objekt˚ u. Proto byl tento model nejvhodnˇejˇs´ı jako v´ ychoz´ı metoda pro hled´an´ı analytick´eho modelu pro bodov´a svˇetla se z´avislost´ı intenzity na u ´hlu.
6
KAPITOLA 3. TEORIE
3 Teorie V t´eto ˇc´asti nejdˇr´ıve pop´ıˇsu a vysvˇetl´ım diferenci´aln´ı a integr´aln´ı transportn´ı rovnici, kter´a popisuje interakci svˇetla s opticky aktivn´ım prostˇred´ım. Pot´e se budu zab´ yvat pˇr´ım´ ym rozptylem svˇetla v m´ediu a nakonec vlivem rozptylu svˇetla na odchoz´ı radianci objektu.
3.1
Obecn´ y z´ aklad
Pˇri pr˚ uchodu svˇetla opticky aktivn´ım prostˇred´ım vznik´a nˇekolik jev˚ u, kter´e je tˇreba br´at vu ´vahu. Je to absorbce, z´aˇren´ı a rozptyl (Obr´azek 3.1). Absorbce nast´av´a pˇri pˇremˇenˇe svˇeteln´e energie na jin´ y druh energie, jako je napˇr´ıklad teplo. Obvykle se oznaˇcuje koeficientem Ka (x). Dalˇs´ım jevem je z´aˇren´ı (emise) Ke (x). To mus´ıme br´at v u ´vahu, pokud bod x spont´annˇe vyzaˇruje svˇetelnou energii. Posledn´ım z v´ yˇse popsan´e trojice je rozptyl svˇetla. Ten nast´av´a pˇri dopadu svˇetla na ˇca´stici v m´ediu, kdy ˇca´st svˇeteln´e energie zmˇen´ı sv˚ uj smˇer. Koeficient Ks (x) ud´av´a, jak velik´e mnoˇzstv´ı pˇr´ıchoz´ı energie se rozpt´ yl´ı do jin´ ych smˇer˚ u. Pˇri v´ ypoˇctu energie, kter´e se dostane aˇz k pozorovateli, rozdˇelujeme rozptyl na dvˇe ˇca´sti. Prvn´ı zp˚ usobuje u ´bytek energie (out-scattering) pro dan´ y smˇer paprsku. V druh´em pˇr´ıpadˇe k v´ ysledn´e energii pˇrisp´ıv´a kladnˇe rozptyl (inscattering) ostatn´ıch paprsk˚ u od ostatn´ıch bod˚ u v m´ediu.
Obr´azek 3.1: Jevy vznikaj´ıc´ı pˇri pr˚ uchodu paprsku opticky aktivn´ım prostˇred´ım.
S vyuˇzit´ım v´ yˇse popsan´ ych jev˚ u m˚ uˇzeme vyj´adˇrit zmˇenu energie v okol´ı nˇejak´eho bodu x ve smˇeru ωo jako diferenci´aln´ı rovnici, kter´a se naz´ yv´a transportn´ı rovnice. ks (x) Z dL(x, ωo ) = ka (x)Le (x, ωo ) − kt L(x, ωo ) + L(x, ωo )p(ωo , ωi )dσωi , dx 4π Ω
(3.1)
kde Le (x, ωo ) je vyz´aˇren´a radiance, kt = ks +ka je extinkˇcn´ı koeficient, a p(ωo , ωi ) je f´azov´a funkce, kter´a urˇcuje jak´ ym zp˚ usobem se svˇetlo v opticky aktivn´ım prostˇred´ı rozptyluje. Obr´azek 3.2 ukazuje nˇekolik pˇr´ıpad˚ u tˇechto funkc´ı. Transportn´ı rovnice 3.1 se d´a rozloˇzit na tˇri ˇca´sti. Prvn´ı ˇclen ka (x)Le (x, ωo ) v rovnici pˇredstavuje vyz´aˇrenou radianci v bodˇe x ve smˇeru ωo , prostˇredn´ı ˇclen urˇcuje ztr´atu
KAPITOLA 3. TEORIE
7
Obr´azek 3.2: Pˇr´ıklad dvou typ˚ u f´azov´e funkce. Vlevo pro mal´e ˇca´stice, vpravo pro velk´e.
energie pohlcen´ım a rozptylem (out-scattering), posledn´ı ˇclen ud´av´a pˇr´ır˚ ustek energie, kter´ y je zp˚ usoben okoln´ım rozpt´ ylen´ ym svˇetlem odraˇzen´ ym do smˇeru ωo (in-scattering). Pojmenujme si J(x, ωo ) ˇc´ast, kter´a k v´ ysledn´e radianci pˇrisp´ıv´a kladnˇe. Pak, Ω(x) Z J(x, ωo ) = (1 − Ω(x))Le (x, ωo ) + L(x, ωo )p(ωo , ωi )dσωi , 4π Ω kde Ω(x) = rovnici:
ks kt
(3.2)
je takzvan´ y albedo koeficient. Integrac´ı rovnice 3.2 dostaneme n´asleduj´ıc´ı
Obr´azek 3.3: Integr´aln´ı transportn´ı rovnice. Radiance L(x) v bodˇe x je souˇctem absorbovan´e radiance τ (x0 , x)L(x0 ) a radiance z m´edia.
L(x, ωo ) = Lri + Lm = τ (x0 , x)L(x0 , ωo ) + −
Rx
kt (u)du
Z x x0
τ (u, x)kt (u)J(u, ωo )du.
(3.3)
kde τ (x0 , x) = e x0 je ˇcinitel prostupu. Bod x0 je bod na prvn´ım povrchu mimo aktivn´ı prostˇred´ı, ve smˇeru ωo , a Lri pak pˇredstavuje radianci poch´azej´ıc´ı z toho bodu. Lm je potom radiance pˇrich´azej´ıc´ı od bod˚ u uvnitˇr media (Obr´azek 3.3). Radiance uvnitˇr m´edia J(x) se d´a rozloˇzit do tˇr´ı ˇclen˚ u, na vlastn´ı z´aˇren´ı m´edia, na radianci vzniklou pˇri prvn´ım rozptylu (single scattering) a na rozptyl radiance uvnitˇr
8
KAPITOLA 3. TEORIE
m´edia (multiple scattering). Ω(x) Z Ω(x) Z J(x, ωo ) = Je (x, ωo ) + Lri (x, ωi )p(ωo , ωi )dσωi + Lm (x, ωi )p(ωo , ωi )dσωi , 4π Ω 4π Ω (3.4) Zjednoduˇsen´e modely, kter´e berou pˇri rozptylu v u ´vahu pouze prvn´ı rozptyl, neuvaˇzuj´ı o v´ıcen´asobn´ ych rozptylech uvnitˇr m´edia, tj. zanedb´avaj´ı tˇret´ı ˇclen.
3.2
Model pro single scattering
V t´eto a n´asleduj´ıc´ıch podkapitol´ach se jiˇz budu zab´ yvat pouze modelem pro single scattering. Hlavnˇe se zamˇeˇr´ım na pˇr´ır˚ ustek energie zp˚ usoben´ y rozptylem v opticky aktivn´ım prostˇred´ı, protoˇze v´ ypoˇcet absorbce, emise, a u ´bytku energie rozptylem je pomˇernˇe jednoduch´ y. Aby se podaˇrilo zjednoduˇsit integr´al z rovnice 3.4 je potˇreba pˇrijmout nˇekolik omezen´ı. D˚ uleˇzit´ ym pˇredpokladem je omezen´ı se pouze na homogenn´ı prostˇred´ı, kter´e se nach´az´ı v cel´e sc´enˇe. V homogenn´ım prostˇred´ı jsou totiˇz koeficienty prostˇred´ı vˇsude stejn´e. Pro jednoduchost omez´ıme jeˇstˇe f´azovou funkci p(ωo , ωi ) na isotropn´ı. Zde ale nen´ı probl´em pouˇz´ıt i jin´e f´azov´e funkce, podobnˇe jako v [32, 33]. D´ale provedeme omezen´ı u pouˇzit´eho svˇetla. Zde budu uvaˇzovat pouze reflektorov´a svˇetla (spotlight), kter´a maj´ı v z´avislosti na u ´hlu intenzitu svˇetla po ˇca´stech konstantn´ı. Pokud vezmeme v u ´vahu vˇsechny pˇr´ıspˇevky k radianci pod´el pohledov´eho paprsku a omez´ıme se na model z obr´azku 1.2(c), dostaneme v m´ıstˇe pozorovatel O radianci L odpov´ıdaj´ıc´ı n´asleduj´ıc´ı rovnici. ~ ) + Lp (P )e−Kt OP L(O) = La (OP
(3.5)
Prvn´ı ˇclen pˇredstavuje radianci z´ıskanou prvn´ım rozptylem svˇetla v opticky aktivn´ım prostˇred´ı (single scattering) a simuluje z´aˇri kolem reflektoru. Ta je z´avisl´a na vzd´alenosti svˇetla od pozorovatele a na optick´e hustotˇe m´edia. Pro bodov´e svˇetlo se tato radiance vyˇsetˇruje mezi pozorovatelem O a bodem P na povrchu objektu. U reflektoru se staˇc´ı omezit na body uvnitˇr osvˇetlen´eho kuˇzele, protoˇze vnˇe tohoto kuˇzele je pˇr´ıspˇevek k radianci nulov´ y (Obr´azek 3.4). Druh´ y ˇclen je potom radiance odraˇzen´a od objektu v bodˇe P , kter´a je zmenˇsen´a o absorbci a rozptyl. Ten zjemˇ nuje a rozostˇruje zrcadlov´e odrazy a pˇrisp´ıv´a k zesvˇetlov´an´ı tmav´ ych ˇc´ast´ı sc´eny. To je vyj´adˇreno n´asleduj´ıc´ı rovnic´ı: Lp (P ) = Lp,a (P ) + Lp,d (P )e−Kt SP
(3.6)
kde Lp,a (P ) je radiance dopadaj´ıc´ı na objekt v bodˇe P , kter´a je podobn´a jako radiance La z rovnice 3.5, ale z´ıskan´a mezi zdrojem svˇetla S a bodem na povrchu objektu P . Druh´ y ˇclen je radiance pˇr´ım´eho osvˇetlovac´ıho modelu, jako je napˇr´ıklad Phong˚ uv model, kter´a je opˇet zmenˇsen´a o absorbci a rozptyl. ˇ Cleny, kter´e nelze v rovnic´ıch 3.5 a 3.6 analyticky spoˇc´ıtat, jsou pˇr´ıspˇeveky k radianci ~ ) a Lp,a (P ). Jimi se budeme v n´asleduj´ıc´ıch dvou od rozpt´ ylen´eho svˇetla v m´ediu La (OP kapitol´ach zab´ yvat.
KAPITOLA 3. TEORIE
9
Obr´azek 3.4: Svˇetlo se z´avislost´ı intenzity na u ´hlu.
3.3
Airlight integr´ al
Integr´al, kter´ y se skr´ yv´a pod prvn´ım ˇclenem z rovnice 3.5, a je zjednoduˇsenou verz´ı rovnice 3.3, si pˇrep´ıˇseme do n´asleduj´ıc´ı podoby: La =
Z P O
kt p(α) ·
I(θ)e−kt d −kt x ·e dx d2
(3.7)
Protoˇze budeme uvaˇzovat pouze svˇetlo typu reflektor, m˚ uˇzeme, jak uˇz bylo v´ yˇse zm´ınˇeno, pˇrepsat tento integr´al na n´asleduj´ıc´ı tvar podle obr´azku 3.4 a 3.6. La =
Z B A
Z b I(θ)e−kt d −kt x I(θ)e−kt d −kt x · e dx = ·e dx kt p(α) · k p(α) · t d2 d2 a
(3.8)
Protoˇze je pˇr´ıspˇevek k v´ ysledn´e radianci mezi body O,A a B,P nulov´ y, upˇresnil jsem v pˇredchoz´ı rovnici meze integr´alu O a P na A a B. Tyto body vzniknou, kdyˇz pohledov´ y paprsek protne kuˇzel reflektoru. Pokud leˇz´ı bod A za pozorovatelem dosad´ı se m´ısto pr˚ useˇc´ıku A bod O, obdobnˇe pokud je objekt vidit´eln´ y pod´el pohledov´eho paprsku uvnitˇr svˇeteln´eho kuˇzele, nahrad´ı se pr˚ useˇc´ıku B bodem P . Protoˇze uvaˇzujeme intenzitu svˇetla I(θ) konstantn´ı v z´avislosti na u ´hlu, m˚ uˇzeme za ni dosadit I0 . V´ yˇse jsem tak´e uvedl, 1 ˇze budu uvaˇzovat isotropn´ı prostˇred´ı, a m˚ uˇzu tedy po normalizaci za p(α) dosadit 4π (v 1 ). Nyn´ı dost´av´ame rovnici: izotropn´ım prostˇred´ı je f´azov´a funkce konstantn´ı a p(α) = 4π I0 kt Z b e−kt d −kt x ·e dx La = 4π a d2
(3.9)
Rovnice 3.9 st´ale z´avis´ı na 4 parametrech, ale nyn´ı ji jiˇz postaˇcuje upravit podle [32, 33]. C´ılem je rodˇelit tuto rovnici na dvˇe nez´avisl´e ˇc´asti, kde prvn´ı budou analytick´e rovnice a druh´a ˇca´st bude integr´al, kter´ y bude z´aviset pouze na jednom parametru
10
KAPITOLA 3. TEORIE O, P, S A, B a b d h l m t x I(θ) α β φ θ
oznaˇcuj´ı pozorovatele, bod na povrchu objektu a zdroj svˇetla pr˚ useˇc´ıky pohledov´eho paprsku s kuˇzelem svˇetla vzd´alenost k bliˇzˇs´ımu pr˚ useˇc´ıku pohledov´eho paprsku s kuˇzelem svˇetla vzd´alenost k vzd´alenˇejˇs´ımu pr˚ useˇc´ıku pohledov´eho paprsku s kuˇzelem svˇetla vzd´alenost mezi svˇetlem a m´ıstem prvn´ıho rozptylu vzd´alenost mezi svˇetlem a m´ıstem prvn´ıho rozptylu pro α = π2 vzd´alenost mezi zdrojem svˇetla a pozorovatelem vzd´alenost k prvn´ımu objektu vzd´alenost mezi m´ıstem prvn´ıho rozptylu a pozorovatelem pro α = π2 vzd´alenost mezi m´ıstem prvn´ıho rozptylu a pozorovatelem intenzita svˇetla u ´hel rozptylu u ´hel mezi aktu´alnˇe vyˇsetˇrovan´ ym paprskem svˇetla a h u ´hel mezi smˇerem k svˇetlu a smˇere pohledu u ´hel mezi smˇerem reflektoru a aktu´alnˇe vyˇsetˇrovan´ ym paprskem svˇetla
Obr´azek 3.5: Popis oznaˇcen´ı v obr´azku 3.6.
nez´avisl´em na koeficientech prostˇred´ı a p˚ ujde pˇredpoˇc´ıtat do tabulky. Proto nyn´ı dosad´ım za x: x = t + h tan β, kde h = l sin φ a t = l cos φ jsou geometrick´e parametry a jsou bˇehem integrace konstantn´ı. Tak´e se podle toho uprav´ı meze na γa = arctan
a−t , h
γb = arctan
b−t , h
a dostanu n´asleduj´ıc´ı rovnici: I0 kt e−kt t Z γb e−kt d h La = · · e−kt h tan β dβ 2 4π d cos2 β γa
(3.10)
Pˇredchoz´ı rovnice lze d´ale zjednoduˇsit dosazen´ım za d: d=
h cos β
β+1 I0 kt e−kt t Z γb −kt h sincosβ e L= dβ 4πh γa
Jeˇstˇe se provede menˇs´ı u ´prava, kdyˇz se za β dosad´ı β = 2η −
π 2
(3.11)
KAPITOLA 3. TEORIE
11
Obr´azek 3.6: Diagram ukazuje jak svˇetlo putuje od zdroje k pozorovateli a pˇritom se v m´ediu jednou rozpt´ yl´ı.
a meze se uprav´ı do tvaru: π 1 a−t − arctan 4 2 h π 1 b−t γb = − arctan 4 2 h
γa =
(3.12)
N´asleduj´ıc´ı rovnice je jiˇz v koneˇcn´e podobˇe: Z γb I0 kt e−kt t Z γb −kt h tan η La = e dη = A0 e−A1 tan η dη 2πh γa γa
(3.13)
Nyn´ı m´am rovnici, kde je integr´al z´avisl´ y pouze na jednom parametru, a t´ım je A1 (Rovnice 3.15). Nav´ıc je A1 bˇehem v´ ypoˇctu konstantn´ı. Druhou ˇc´ast rovnice pak tvoˇr´ı analytick´ y ˇclen A0 (Rovnice 3.14). A0 (h, t, kt ) =
I0 kt e−kt t 2πh
A1 (h, kt ) = kt h
(3.14) (3.15)
Nyn´ı si m˚ uˇzu integr´al zapsat jako funkci dvou promˇenn´ ych: F (u, v) =
Z v 0
e−u tan ζ dζ
(3.16)
Pro funkci F (u, v) neexistuje jednoduch´ y analytick´ y v´ yraz, ale lze si ji pˇredpoˇc´ıtat do 2D tabulky. Pr˚ ubˇeh funkce F (u, v) lze vidˇet na obr´azku 3.7. S vyuˇzit´ım t´eto moˇznosti
12
KAPITOLA 3. TEORIE
Obr´azek 3.7: Graf funkce F(u,v).
lze rovnici 3.13 vyˇreˇsit v´ ypoˇctem analytick´eho ˇclenu A0 a dvˇema pohledy do 2D tabulky. Nakonec tedy dost´av´am pro La v´ yraz La (φ, l, a, b, kt ) = A0 [F (A1 , γb ) − F (A1 , γa )] ,
(3.17)
kde γa a γb jsou z rovnice 3.12.
3.4
Vliv rozptylu na povrch objektu
Podobnˇe jako v [32] spoˇc´ıt´am osvˇetlen´ı bodu P a vliv rozpt´ ylen´eho svˇetla v m´ediu na nˇej. To na povrchu objektu zjemˇ nuje a rozostˇruje zrcadlov´e odrazy a pˇrisp´ıv´a k zesvˇetlov´an´ı tmav´ ych ˇca´st´ı na objektu. Budu poˇc´ıtat odraˇzenou radianci na povrchu objektu v bodˇe P (ˇclen Lp (P ) z rovnice 3.5), utlumenou pˇri cestˇe m´ediem z bodu P k pozorovateli O ˇ o hodnotu e−Kt OP . Clen Lp (P ) popisuje podrobnˇeji rovnice 3.6. Lp,d je pˇr´ım´e osvˇetlen´ı bodu P a podle obr´azku 3.9 lze zapsat ve tvaru: Lp,d =
I0 fr (θs , φs , θv , φv ) cos θs , l2
(3.18)
kde fr je BRDF objektu, (θv , φv ) je smˇer pohledu a (θs , φs ) je smˇer dopadu svˇetla na povrch objektu. Druhou ˇca´st´ı ˇclenu Lp (P ) je rozpt´ ylen´a radiance Lp,a . Spoˇc´ıtat tento ˇclen je obt´ıˇznˇejˇs´ı, protoˇze je potˇreba seˇc´ıst pˇr´ıspˇevky radiance La z rovnice 3.17 ze vˇsech smˇer˚ u, Z
Lp,a =
Ω2π
La (φ(θs , ωi ), l, a(θi , ωi ), b(θi , ωi ), kt )fr (θi , φi , θv , φv ) cos θi dωi .
(3.19)
Nejdˇr´ıve si probereme parametry radiance La . Zde je φ u ´hel mezi dopadaj´ıc´ım svˇetlem ωi a smˇerem ke svˇetlu (θs , φs ). Pro izotropn´ı BRDF m˚ uˇzeme souˇradn´ y syst´em natoˇcit
KAPITOLA 3. TEORIE O, P, S l n I(θ) φ (θs , φs ) (θi , φi ) (θv , φv )
13
oznaˇcuj´ı pozorovatele, bod na povrchu objektu a zdroj svˇetla vzd´alenost mezi svˇetlem a povrchem objektu norm´ala povrchu v bodˇe P intenzita svˇetla u ´hel mezi smˇerem ke zdroji a dopadaj´ıc´ım svˇetlem smˇer ke zdroji svˇetla smˇer dopadaj´ıc´ıho svˇetla na povrch objektu smˇer pohledov´eho paprsku
Obr´azek 3.8: Popis oznaˇcen´ı v obr´azku 3.9.
Obr´azek 3.9: Diagram popisuje dopadaj´ıc´ı svˇetlo na povrch objektu v opticky aktivn´ım prostˇred´ı.
tak, aby φs = 0. Potom m˚ uˇzeme pˇrepsat φ na na tvar z rovnice 3.19. Pomˇernˇe velk´ ym probl´emem jsou zde a(θi , ωi ) a b(θi , ωi ), kter´e jsou z´avisl´e na dopadaj´ıc´ım rozpt´ ylen´em svˇetle. Naˇstˇest´ı je vˇzdy parametr a = 0, a spodn´ı mez integr´alu v La se tak rovn´a 1 φ(θs , ωi ). U parametru b takov´e ˇstˇest´ı nem´ame a mˇeli bychom za nˇej dosadit pro 2 kaˇzd´ y smˇer dopadaj´ıc´ıho svˇetla pr˚ useˇc´ık s kuˇzelem nebo vzd´alenost k povrchu nejbliˇzˇs´ıho objektu. Proto zde provedu pˇredpoklad, stejnˇe jako v [32], ˇze b = ∞. Je to pomˇernˇe velk´e zjednoduˇsen´ı, ale abych se vyhnul sloˇzit´emu integr´alu v La , je to nezbytn´e. Horn´ı mez tedy bude π2 . Nejprve budeme ˇreˇsit rovnici 3.19 pro Lambert˚ uv osvˇetlovac´ı model (ide´aln´ı dif´ uzn´ı BRDF) a z´ıskanou rovnici pot´e rozˇs´ıˇr´ıme i pro Phong˚ uv model. Nyn´ı pro Lambert˚ uv
14
KAPITOLA 3. TEORIE
Obr´azek 3.10: Graf funkce G0 (u, v) a G20 (u, v).
pˇr´ıpad dostanu po dosazen´ı za La v rovnici 3.19 n´asleduj´ıc´ı v´ yraz: Lp,a =
¸
·
Z Ω2π
A0
1 π F (A1 , ) − F (A1 , φ) kd cos θi dωi . 2 2
(3.20)
Po dosazen´ı za A0 a pˇresunut´ı konstant pˇred integr´al dostanu v´ yslednou rovnici Lp,a
· ¸ I0 kt kd Z e−kt l cos φ π 1 = F (A1 , ) − F (A1 , φ) cos θi dωi . 2πl Ω2π sin φ 2 2
(3.21)
Protoˇze u ´hel φ je z´avisl´ y na smˇeru θs a integraˇcn´ı promˇenn´e ωi , je integr´al z´avisl´ y pouze na dvou parametrech, a mohu si ho oznaˇcit jako funkci G0 (kt l, θs ) a dost´av´am: Lp,a =
I0 kt kd G0 (kt l, θs ) 2πl
(3.22)
Phong˚ uv model je mnohem komplikovanˇejˇs´ı a je tˇreba prov´est reparametrizaci z [29]. Po t´eto transformaci je moˇzn´e uk´azat, ˇze Lambert˚ uv a Phong˚ uv model jsou matematicky analogick´e. Proto mohu definovat dalˇs´ı 2D funkci Gn , kter´a vych´az´ı z funkce G0 a bere vu ´vahu Phong˚ uv exponent n. ·
Z
Gn (kt l, θs0 )
=
Ω2π
¸
π 1 e−kt l cos φ F (A1 , ) − F (A1 , φ) cosn θi dωi . sin φ 2 2
(3.23)
´ Uhel θs0 se v tomto pˇr´ıpadˇe nemˇeˇr´ı od norm´aly povrchu jako u G0 , ale mˇeˇr´ı se mezi zrcadlovˇe odraˇzen´ ym paprskem a smˇerem pohledu. Uk´azka grafu pro G0 a G20 je na obr´azku 3.10. V´ ysledn´ y v´ yraz pro osvˇetlen´ı povrchu objektu Phongov´ ym modelem, kter´ y bere v u ´vahu pˇr´ım´e osvˇetlen´ı i rozptyl je: "
Lp = I0 kd
#
"
#
e−kt l kt e−kt l kt cos θ + G (k l, θ ) + I k cosn θs0 + Gn (kt l, θs0 ) s 0 t s 0 s 2 2 l 2πl l 2πl
(3.24)
KAPITOLA 3. TEORIE
15
Podobnˇe jako pˇri v´ ypoˇctu rozptylu v m´ediu La , se podaˇrilo zjednoduˇsit v´ ypoˇcet pro urˇcen´ı radiance na povrchu objektu na nˇekolik analytick´ y rovnic a ˇctyˇri pohledy do tabulky, dva pro dif´ uzn´ı odraz a dva pro zrcadlov´ y. Tyto modely umoˇznily zachovat nˇekter´e d˚ uleˇzit´e efekty, kter´e svˇetlo pˇri rozptylu v opticky aktivn´ım prostˇred´ı vytv´aˇr´ı. ˇ Clen La simuluje z´aˇri kolem reflektoru. Ta je z´avisl´a na vzd´alenosti svˇetla od pozorovatele a na optick´e hustotˇe m´edia. Druh´ y ˇclen Lp potom zjemˇ nuje a rozostˇruje zrcadlov´e odrazy a pˇrisp´ıv´a k zesvˇetlov´an´ı tmav´ ych ˇc´ast´ı sc´eny.
16
KAPITOLA 4. IMPLEMENTACE
4 Implementace V t´eto kapitole pop´ıˇsu implementaci m´eho modelu pro rozptyl svˇetla (reflektoru) v mlze jako st´ınovac´ı program. Redukc´ı ˇca´st´ı La a Lp z rovnice 3.5 na nˇekolik analytick´ ych ˇclen˚ u a na p´ar pohled˚ u do 2D tabulky, mi umoˇznilo implementovat cel´ y algoritmus jako st´ınovac´ı program pixel˚ u, kter´ y bˇeˇz´ı na programovateln´e grafick´e kartˇe. D´ıky tomu lze tento algoritmus s menˇs´ımi u ´pravami pouˇz´ıt ve st´avaj´ıc´ıch aplikac´ıch. Pro naps´an´ı testovac´ı aplikace jsem pouˇzil OpenGL a na psan´ı shaderu jsem si zvolil programovac´ı jazyk GLSL [14]. Pro pˇrehlednost jsem rozdˇelil algoritmus do nˇekolika funkc´ı. Vstupn´ım bodem algoritmu je funkce main() (Obr´azek 4.3), v n´ı se vol´a funkce IntersectionPoints() (Obr´azek 4.1) pro v´ ypoˇcet pr˚ useˇc´ık˚ u A a B pohledov´eho paprsku s kuˇzelem svˇetla, a tˇri funkce pro v´ ypoˇcet jednotliv´ ych ˇc´ast´ı rovnice 3.5. Jsou jimi funkce Airlight(), Diffuse() a Specular() (Obr´azek 4.2). Vˇetˇsina parametr˚ u, kter´e jsou pro v´ ypoˇcet potˇreba, se zad´avaj´ı pomoc´ı funkc´ı OpenGL, pˇredaj´ı se do fragment shaderu jako uniformn´ı parametry z aplikace nebo se poˇslou jako promˇenn´e parametry ze st´ınovac´ıho programu vrchol˚ u. Mezi prvn´ı typ parametr˚ u patˇr´ı nastaven´ı hodnot u mlhy a zdoje svˇetla. Druh´ ym typem je napˇr´ıklad intenzita. Pˇres uniformn´ı parametr se tak´e pˇred´avaj´ı 2D funkce F, G0 a Gn . Ty jsou uloˇzeny jako 2D textury s hodnotami v pohybliv´e ˇra´dov´e ˇc´arce. Posledn´ım typem se v naˇsem pˇr´ıpadˇe pˇred´av´a interpolovan´a norm´ala a poloha vrcholu (Obr´azek 4.3). Zbyl´e parametry, kter´e se bˇehem v´ ypoˇctu mˇen´ı, se pak vypoˇc´ıt´aj´ı na zaˇca´tku funkce main() . Prvn´ı, co je potˇreba spoˇc´ıtat, jsou pr˚ useˇc´ıky A a B. Jejich v´ ypoˇcet prov´ad´ı v´ yˇse zm´ınˇen´a funkce IntersectionPoints z obr´azku 4.1. Tato funkce tak´e nastavuje promˇenn´e a a b podle toho, kde body A a B leˇz´ı a jak´ ym smˇerem sv´ıt´ı reflektor. Pokud pohledov´ y paprsek neprotne svˇeteln´ y kuˇzel, nastav´ı se hodnota a i b na nulu. Dalˇs´ım krokem je s pomoc´ı funkce Airlight() (Obr´azek 4.2) v´ ypoˇcet pˇr´ıspˇevku rozpt´ ylen´eho svˇetla podle rovnice 3.17. Pokud svˇetlo v dan´em fragmentu dopad´a i na povrch objektu provede se ve funkc´ıch Diffuse() a Specular() v´ ypoˇcet Phongova osvˇetlovac´ıho modelu z rovnice 3.24. N´avratovou hodnotou funkce main() je potom barva pixelu, kter´a se z´ısk´a jako souˇcet vˇsech tˇr´ı hodnot.
KAPITOLA 4. IMPLEMENTACE
// // // //
17
c0, c1, c2 - parametry kvadratick´ e rovnice V - smˇ er pohledov´ eho paprsku Dvp - vzd´ alenost mezi pozorovatelem a objektem lightDir - smˇ erov´ y vektor svˇ eteln´ eho paprsku
vec2 IntersectionPoints(float c0, float c1, float c2, vec3 V, float Dvp, vec3 lightDir) { float s1 = (-c1+sqrt(c1*c1-c0*c2))/(c2); float s2 = (-c1-sqrt(c1*c1-c0*c2))/(c2); // zajist´ ı s1 < s2 float ss = min(s1,s2); s2 = max(s1,s2); s1 = ss; // nalezen´ ı pr˚ useˇ cı ´k˚ u vec3 x1 = s1*V; vec3 x2 = s2*V; float a = s1; float b = s2; float d1 = dot(lightDir,normalize(x1-gl_LightSource[0].position.xyz)); float d2 = dot(lightDir,normalize(x2-gl_LightSource[0].position.xyz)); // kontrola protnut´ ı spr´ avn´ eho kuˇ zele if ( d1 <= 0.) { a = s2; b = Dvp; } if ( d2 <= 0. ) { a = 0.; b = s1; if ( d1 < 0.) { b = 0.; // ˇ z´ adn´ y pr˚ useˇ c´ ık } } return vec2(a,b); }
Obr´azek 4.1: Zdrojov´ y k´od funkce IntersectionPoints() pro v´ ypoˇcet pr˚ useˇc´ıku paprsku se svˇeteln´ ym kuˇzelem.
18
KAPITOLA 4. IMPLEMENTACE
// // // // // // // //
a, b, Dvp - vzd´ alenost od pozorovatele k bod˚ um A, B a P Dsp - vzd´ alenost od zdroje svˇ etla k povrchu objektu beta - extinkˇ cn´ ı koeficient gamma - ´ uhel mezi pohledov´ ym paprskem a smˇ erem ke zdoji smˇ etla F, G_0, G_20 - tetxury pro funkce F, G_0 a G_20 NdotL - cos ´ uhlu mezi dopadaj´ ıc´ ım svˇ etlem a norm´ alou povrchu RV - cos ´ uhlu mezi dopadaj´ ıc´ ım svˇ etlem a zrcadlov´ ym odrazem thetas, thetas_ - ´ uhly mezi dopadaj´ ıc´ ım svˇ etlem a norm´ alou, resp. zrcadlov´ ym odrazem
vec4 Airlight( float Dsv, float beta, float a, float b, float gamma, sampler2D F) { const float LOG2E = 1.442695; const float PI = 3.1415926535; float t = Dsv*cos(gamma); float h = Dsv*sin(gamma); float u = beta*h; float v1 = 0.25*PI+0.5*atan((b-t)/h); float v2 = 0.25*PI+0.5*atan((a-t)/h); vec4 vec4 vec4 vec4
f1=texture2D(F, vec2(v1, u)); f2=texture2D(F, vec2(v2, u)); A0 = (beta*gl_LightSource[0].diffuse*exp2(-beta*t*LOG2E))/(2.*PI*h)); color = A0*(f1.x-f2.x);
return color; } vec4 Diffuse( float Dsp, float beta, float NdotL, float thetas, sampler2D G_0) { const float LOG2E = 1.442695; const float PI = 3.1415926535; float t1 = exp2(-beta*Dsp*LOG2E)*NdotL/Dsp; vec4 t2 = beta*texture2D(G_0, vec2(beta*Dsp/2., thetas/PI))/(2.*PI); vec4 color = gl_FrontMaterial.diffuse*gl_LightSource[0].diffuse*(t1+t2.x)/Dsp; return color; } vec4 Specular( float Dsp, float beta, float RV, float thetas_, sampler2D G_20) { const float LOG2E = 1.442695; const float PI = 3.1415926535; t1 = exp2(-beta*Dsp*LOG2E)*pow(RV,20.)/Dsp; t2 = beta*texture2D(G_20,vec2(beta*Dsp/2., thetas_/PI))/(2.*PI); vec4 color = gl_FrontMaterial.specular*gl_LightSource[0].specular*(t1+t2.x)/Dsp; return color; }
Obr´azek 4.2: Zdrojov´ y k´od funkc´ı pro v´ ypoˇcet osvˇetlen´ı podle rovnice 3.5.
KAPITOLA 4. IMPLEMENTACE
varying vec3 normal, vertPos; // norm´ ala a pozice vrcholu objektu uniform sampler2D F, G_0, G_20; // textury s funkc´ ı F, G_0 a G_20 uniform float intensity; // intenzita svˇ etla //tt=pow(cos(theta),2)*I, kde I je jednotkova matice a cos(theta) je GL_SPOT_CUTOFF uniform mat3 tt; void main(void) { const float LOG2E = 1.442695; const float PI = 3.1415926535; vec3 lightDir = normalize(gl_LightSource[0].spotDirection); float beta = gl_Fog.density; vec3 V = normalize(vertPos); vec3 S = normalize(gl_LightSource[0].position.xyz); vec3 N = normalize(normal); vec3 L = normalize(gl_LightSource[0].position.xyz - vertPos); float NdotL = max(dot(N, L),0.0); vec4 color = vec4(0.0, 0.0, 0.0, 0.); vec3 S1 = gl_LightSource[0].position.xyz; mat3 M = -tt + mat3(vec3(lightDir.x*lightDir), vec3(lightDir.y*lightDir), vec3(lightDir.z*lightDir)); vec3 hlp = V*M; float c2 = dot(hlp,V); float c1 = dot(hlp,-S1); hlp = S1*M; float c0 = dot(hlp,S1); // pokud m´ a kvadratick´ a rovnice re´ aln´ e koˇ rerny, v´ ypoˇ cet probˇ ehne if ( c1*c1-c0*c2 >= 0. ) { float Dvp = length(vertPos); vec2 ab = IntersectionPoints(c0, c1, c2, V, Dvp, lightDir); float a = clamp(ab.x, 0., Dvp); float b = clamp(ab.y, 0., Dvp); float Dsv = length(gl_LightSource[0].position.xyz); float gamma = acos(dot(S, V)); // Airlight color += intensity*Airlight(Dsv, beta, a, b, gamma, F); float spotEffect = dot(normalize(gl_LightSource[0].spotDirection), normalize(-L)); if (spotEffect > gl_LightSource[0].spotCosCutoff) { vec3 R = reflect(V,N); float RV = max(0.0, dot(R,L)); float Dsp = length(gl_LightSource[0].position.xyz - vertPos); float thetas = acos(dot(N, L)); float thetas_ = acos(dot(R,V)); // Diffuse color += intensity*Diffuse(Dsp, beta, NdotL, thetas, G_0); // Specular color += intensity*Specular(Dsp, beta, NdotL, thetas, G_20); } } gl_FragColor = color; }
Obr´azek 4.3: Zdrojov´ y k´od vstupn´ı funkce main().
19
´ KAPITOLA 5. VYSLEDKY
20
5 V´ ysledky V´ ysledn´ y model, pˇredstaven´ y v pˇredchoz´ıch kapitol´ach, jsem implementoval jako st´ınovac´ı program a ten jsem n´aslednˇe otestoval ve vlastn´ı OpenGL aplikaci. Testoval jsem rychlost renderov´an´ı v z´avislosti na rozliˇsen´ı obr´azku a na poˇctu svˇetel ve sc´enˇe. D´ale jsem tak´e pozoroval jak se projev´ı zmˇena nˇekter´ ych parametr˚ u (hustota mlhy, vzd´alenost svˇetla od pozorovatele) na vzhled sc´eny. Pro testov´an´ı jsem pouˇzil poˇc´ıtaˇc s procesorem Athlon 3000+, 512MB RAM a s grafickou kartou ATI Radeon X1650Pro. Testov´an´ı prob´ıhalo v operaˇcn´ım syst´emu Windows XP.
(a)
(b)
(c)
Obr´azek 5.1: Sn´ımky zachycuj´ıc´ı sc´enu s r˚ uznou hustotou mlhy. Nahoˇre vlevo je sn´ımek bez mlhy, nahoˇre vpravo s kt = 0.01 a dole s kt = 0.05. Je zde vidˇet z´avislost na hustotˇe mlhy (kt ), i na vzd´alenosti svˇetla od pozorovatele.
Nejdˇr´ıve se pod´ıv´ame jak´e jsou vizu´aln´ı efekty pˇri rozptylu svˇetla v m´ediu. Na obr´azku 5.1 je nˇekolik sn´ımk˚ u sc´eny s r˚ uzn´ ym nastaven´ım parametr˚ u. Prvn´ı ukazuje sc´enu bez mlhy, kde extinkˇcn´ı koeficient kt = 0, na druh´em je kt = 0.01 a na posledn´ım sn´ımku je kt = 0.04. Na sn´ımc´ıch s kt > 0 je zˇretelnˇe vidˇet z´aˇre ve smˇeru, kam je reflektor natoˇcen. Toto je jeden z hlavn´ıch efekt˚ u, kter´e m˚ uj model umoˇzn ˇuje zobrazit, a
´ KAPITOLA 5. VYSLEDKY
21
kter´e chyb´ı u jednoduˇsˇs´ıch model˚ u, jako napˇr´ıklad mlha v OpenGL. Na druh´em a tˇret´ım sn´ımku je vidˇet patrn´ y vliv r˚ uzn´e vzd´alenosti svˇetla od pozorovatele. Z obr´azk˚ u 5.1 a 5.7 je vidˇet rozd´ıl pˇri r˚ uzn´em nastaven´ı hustoty mlhy. Podobnˇe je z´avislost na vzd´alenosti a na hustotˇe mlhy vidˇet na obr´azku 5.8, kde je uk´az´ano nˇekolik sn´ımk˚ u sc´eny s autem z r˚ uzn´ ych vzd´alenost´ı a s r˚ uzn´ ym nastaven´ım hustoty mlhy.
(a)
(b)
(c)
Obr´azek 5.2: Obr´azky ukazuj´ı kouli osvˇetlenou reflektorem a vliv rozpt´ ylen´eho svˇetla na jej´ı dif´ uzn´ı sloˇzku. Sn´ımek (a) je sc´ena bez mlhy, sn´ımky (b) a (c) pak ukazuje objekt v mlze bez a se sloˇzkou airlight. Na sn´ımku (b) je vidˇet zesvˇetlen´ı tmav´ ych ˇc´ast´ı, kter´e je jeˇstˇe v´ıce patrn´e na sn´ımku (c).
Vliv rozptylu svˇetla v opticky aktivn´ım prostˇred´ı na povrch objektu ukazuj´ı obr´azky 5.2 a 5.3. Vliv na dif˚ uzn´ı sloˇzku je vidˇet na obr´azku 5.2, kde je koule osvˇetlen´a reflektorem bez mlhy (Obr´azek 5.2(a)) a v mlze (Obr´azky 5.2(b) a 5.2(c)). Na sn´ımku 5.2(b) je vidˇet patrn´e zesvˇetlen´ı lev´e neosvˇetlen´e ˇc´asti koule a na sn´ımku 5.2(c) je to jeˇstˇe zv´ yraznˇeno pˇrid´an´ım sloˇzky airlight. Vliv na zrcadlovou sloˇzku pak ukazuje obr´azek 5.3. Na obr´azc´ıch 5.3(b) a 5.3(c), kter´e jsou s mlhou, je vidˇet zjemnˇen´ı zrcadlov´e sloˇzky a na obr´azku 5.3(c) je tak´e vidˇet patrn´a ztr´ata sytosti barev. Na obr´azku 5.4 je porovn´an´ı metody pro bodov´a svˇetla z [32] a m´e metody pro reflektor. Je vidˇet, ˇze metoda pro bodov´a svˇetla se hod´ı pro lampu z obr´azku 5.4(a), se stejnou metodou a bodov´ ym svˇetlem je tak´e lampa na obr´azku 5.4(b). Zde je vidˇet, ˇze
´ KAPITOLA 5. VYSLEDKY
22
(a)
(b)
(c)
Obr´azek 5.3: Zde je vidˇet vliv rozpt´ ylen´eho svˇetla na zrcadlovou ˇca´st radiance na povrchu objektu pˇri Phongovˇe exponentu 20. Na obr´azc´ıch s mlhou (b) a (c) je viditeln´e zjemnˇen´ı zrcadlov´eho odrazu a hlavnˇe na obr´azku (c) je patrn´e sn´ıˇzen´ı sytosti barev.
pro tento typ lampy se toto svˇetlo nehod´ı. Je zde totiˇz patrn´a z´aˇre i nad svˇetlem, kter´a by u t´eto lampy b´ yt nemˇela. Na sn´ımku 5.4(c) je u stejn´e lampy pouˇzito reflektorov´e svˇetlo s moj´ı metodou, kter´e se pro tento typ lampy hod´ı. Vˇsechny lampy v jednom sn´ımku ukazuje obr´azek 5.5. Testov´an´ı rychlosti vykreslen´ı sn´ımku v z´avislosti na rozliˇsen´ı sc´eny bylo prov´adˇeno s jedn´ım reflektorem. Z tabulky 5.1 je vidˇet z´avislost fps na poˇctu pixel˚ u ve sn´ımku. S rostouc´ım rozliˇsen´ım roste i poˇctem pixel˚ u, kter´e jsou osv´ıceny, a t´ım kles´a fps. Rychlost tak´e znaˇcnˇe kol´ıs´a pˇri st´al´em rozliˇsen´ı, kdyˇz se mˇen´ı poˇcet osv´ıcen´ ych pixel˚ u. M´a to ale i svoj´ı v´ yhodu. Algoritmus nen´ı z´avisl´ y na poˇctu objekt˚ u, a t´ım p´adem i na poˇctu vrchol˚ u ve sc´enˇe. Pokud bych pouˇzil pro v´ ypoˇcet vertex shader, v´ ysledek by byl opaˇcn´ y. Urˇcitˇe by se zv´ yˇsila rychlost, protoˇze dnes bˇeˇzn´e rozliˇsen´ı 1280 × 1024 odpov´ıd´a asi 1.3 milionu vrchol˚ u, coˇz je hodnˇe. Zv´ yˇsen´ı rychlosti je ale vykoupeno pomˇernˇe znaˇcn´ ym sn´ıˇzen´ım kvality v´ ysledn´eho obrazu. Druh´a tabulka 5.2 ukazuje vliv poˇctu svˇetel ve sc´enˇe na rychlost vykreslen´ı. Zde
´ KAPITOLA 5. VYSLEDKY
23
(a)
(b)
(c)
Obr´azek 5.4: Porovn´an´ı m´eho modelu a modelu z ˇcl´anku od Bo Suna [32]. U sn´ımku (a) i (b) je pouˇzit model pro bodov´a svˇetla, na sn´ımku (c) je potom model pro reflektor z tohoto ˇcl´anku.
je dopad na rychlost pomˇernˇe znaˇcn´ y, protoˇze se pro kaˇzd´e svˇetlo mus´ı sc´ena znova vykreslit. Tyto v´ ysledky jsou mˇeˇreny pˇri rozliˇsen´ı sc´eny 800 × 600 a vˇsechna svˇetla osvˇetlovala stejn´ y poˇcet pixel˚ u. Z´avislost potom ukazuje graf na obr´azku 5.6. Je tak´e potˇreba br´at v u ´vahu poˇcet r˚ uzn´ ych druh˚ u leskl´ ych materi´al˚ u, protoˇze funkce Gn se mus´ı pˇredpoˇc´ıtat pro kaˇzd´ y Phong˚ uv exponent zvl´aˇsˇt. Na rozliˇsen´ı textur z´avis´ı kvalita v´ ysledn´eho obr´azku, jako vhodn´a velikost se jev´ y rozliˇsen´ı textury 64 × 64. Pro nˇekolik m´alo hodnot to pro dneˇsn´ı grafick´e karty nen´ı probl´em uchovat v pamˇeti karty. Existuj´ı vˇsak dnes napˇr´ıklad hry, u kter´ ych ani 256MB nebo i v´ıce grafick´e pamˇeti nestaˇc´ı. Potom je potˇreba pˇren´aˇset textury mezi pamˇet´ı poˇc´ıtaˇce a grafick´e karty, coˇz m˚ uˇze m´ıt negativn´ı dopad na rychlost vykreslov´an´ı. Dalˇs´ı vˇec´ı, kter´a m˚ uˇze m´ıt vliv na v´ ykon, je poˇcet instrukc´ı v shaderu. Zdrojov´ y k´od z pˇredchoz´ı kapitoly je pomˇernˇe dlouh´ y a na starˇs´ıch grafick´ ych kart´ach nemus´ı j´ıt d´ıky tomu spustit. Nˇekter´e starˇs´ı grafick´e karty maj´ı omezen´ y poˇcet instrukc´ı, napˇr´ıklad
´ KAPITOLA 5. VYSLEDKY
24
(a)
(b)
Obr´azek 5.5: Svˇetla z obr´azku 5.4 pouˇzit´a v jedn´e sc´enˇe. rozliˇsen´ı 640x480 fps 165
800x600 1024x768 132 98
1280x1024 70
1600x1200 49
Tabulka 5.1: Z´avislost poˇctu sn´ımk˚ u za sekundu na rozliˇsen´ı sn´ımku. Radeon 9700 umoˇzn ˇuje spustit shadery jen s 64 aritmetick´ ymi instrukcemi. Pak je nutn´e shader rozdˇelit na ˇca´sti a sc´enu vykreslit na nˇekolik pr˚ uchod˚ u.
´ KAPITOLA 5. VYSLEDKY
25
Obr´azek 5.6: Z´avislost poˇctu sn´ımk˚ u za sekundu na rozliˇsen´ı sn´ımku (Graf k tabulce 5.2).
poˇcet svˇetel rychlost vykreslen´ı [s]
1 0.0076
2 0.0127
3 0.0179
4 0.0238
5 0.0278
6 0.0333
Tabulka 5.2: Z´avislost rychlosti vykreslen´ı na poˇctu reflektor˚ u ve sc´enˇe.
´ KAPITOLA 5. VYSLEDKY
26
(a)
(b)
Obr´azek 5.7: Sn´ımky s nˇekolika reflektorov´ ymi svˇetly s r˚ uznou hustotou mlhy. Na sn´ımku (a) je kt = 0.04 a sn´ımek (b) m´a kt = 0.1.
´ KAPITOLA 5. VYSLEDKY
27
(a)
(b)
(c)
(d)
Obr´azek 5.8: Nˇekolik pohled˚ u na sc´enu s autem.
28
´ ER ˇ KAPITOLA 6. ZAV
6 Z´ avˇ er V diplomov´e pr´aci jsem se zab´ yval analytick´ ym modelem pro rozptyl svˇetla v opticky aktivn´ım prostˇred´ı, jako je mlha nebo kouˇr, podle [32]. Navrhl jsem jeho rozˇs´ıˇren´ı umoˇzn ˇuj´ıc´ı pouˇzit´ı s reflektorem s po ˇc´astech konstantn´ı z´avislost´ı intenzity na u ´hlu. Tento model se d´a jednoduˇse implementovat v podobˇe st´ınovac´ıho programu a pouˇz´ıt v interaktivn´ıch aplikac´ıch. Kl´ıˇcem k tomu bylo zjednoduˇsit a pot´e upravit transportn´ı rovnici do analytick´e podoby. To umoˇznilo smulovat efekty, jako z´aˇre kolem svˇetla (anglicky airlight), kter´e bylo doposud v interaktivn´ı podobˇe moˇzn´e vidˇet pouze u bodov´ ych svˇetel. Tento model je skoro line´arnˇe z´avisl´ y na poˇctu pouˇzit´ ych svˇetel. Pˇri implementaci jako st´ınovac´ı program je tak´e z´avisl´ y na rozliˇsen´ı sn´ımku, ale nen´ı z´avisl´ y na poˇctu a komplexnosti model˚ u ve sc´enˇe. Kromˇe shaderu jsou tak´e potˇreba tˇri tabulky, kter´e jsou uloˇzeny ve formˇe 2D textury. Pokud je ale potˇreba nˇekolik materi´al˚ u s r˚ uzn´ ym Phongov´ ym koeficientem, je nutn´e pˇredpoˇc´ıtat a uloˇzit do textury funkci Gn pro kaˇzd´ y ˇ materi´al zvl´aˇst. Rozˇs´ıˇren´ı a u ´prav, kter´e je moˇzn´e do budoucna udˇelat, je mnoho. Prvn´ı u ´pravou, kter´a bude m´ıt dopad na rychlost v´ ypoˇctu sc´eny, je d˚ ukladn´a optimalizace shaderu. Dalˇs´ı vylepˇsen´ı jsou pak uˇz z kategorie vizu´aln´ıch. Zde je v budoucnu moˇzn´e rozˇs´ıˇrit m˚ uj model pro pouˇzit´ı s jin´ ymi f´azov´ ymi funkcemi, podobnˇe jako v ˇcl´anc´ıch [32, 33]. Z nich je patrn´e, ˇze by to nemusel b´ yt velik´ y probl´em. Dalˇs´ı oblast´ı jsou jin´e BRDF a osvˇetlovac´ı ˇ modely neˇz je Phong˚ uv. Cl´anek [33] tak´e ukazuje jak´ ym zp˚ usobem je moˇzn´e rozˇs´ıˇrit st´avaj´ıc´ı model, aby se daly pouˇz´ıt volumetrick´e st´ıny. Hlavn´ı v´ yzvou ale bude pokusit se nal´ezt analytick´ y model pro reflektor s jinou neˇz konstantn´ı z´avislost´ı intenzity na u ´hlu. Dalˇs´ı moˇznost´ı je hled´an´ı analytick´eho modelu pro multiple scatering. Je moˇzn´e, ˇze s dalˇs´ım rozvojem programovateln´ ych grafick´ ych karet, kdy bude r˚ ust v´ ypoˇcetn´ı v´ ykon a budou klesat omezen´ı pro programov´an´ı zobrazovac´ıho ˇretˇezce, se objev´ı nov´e metody nebo bude moˇzn´e pouˇzit´ı st´avaj´ıc´ıch metod pro interaktivn´ı aplikace.
KAPITOLA 7. SEZNAM LITERATURY
29
7 Seznam literatury [1] N. Adabala. Modeling and rendering of gaseous phenomena using particle maps. The Journal of Visualization and Computer Animation, 11(5):279–293, 2000. [2] J. F. Blinn. Light reflection functions for simulation of clouds and dusty surfaces. In SIGGRAPH ’82: Proceedings of the 9th annual conference on Computer graphics and interactive techniques, pages 21–29, New York, NY, USA, 1982. ACM Press. [3] E. Cerezo, F. P´erez, X. Pueyo, F. J. Ser´on, and F. X. Sillion. A survey on participating media rendering techniques. The Visual Computer, 21(5):303–328, 2005. [4] Y. Dobashi, T. Yamamoto, and T. Nishita. Interactive rendering of atmospheric scattering effects using graphics hardware. In HWWS ’02: Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on graphics hardware, pages 99–107, 2002. [5] R. Fedkiw, J. Stam, and H. W. Jensen. Visual simulation of smoke. In SIGGRAPH ’01: Proceedings of the 28th annual conference on Computer graphics and interactive techniques, pages 15–22, New York, NY, USA, 2001. ACM Press. [6] P. Hanrahan and W. Krueger. Reflection from layered surfaces due to subsurface scattering. In SIGGRAPH ’93: Proceedings of the 20th annual conference on Computer graphics and interactive techniques, pages 165–174, 1993. [7] K. Hegeman, M. Ashikhmin, and S. Premoˇze. A lighting model for general participating media. In SI3D ’05: Proceedings of the 2005 symposium on Interactive 3D graphics and games, pages 117–124, 2005. [8] N. Hoffman and A. J. Preetham. Real-time light-atmosphere interactions for outdoor scenes. Graphics programming methods, pages 337–352, 2003. [9] H. W. Jensen. Realistic Image Synthesis Using Photon Mapping. AK Peters, 2001. [10] H. W. Jensen and P. H. Christensen. Efficient simulation of light transport in scences with participating media using photon maps. In SIGGRAPH ’98: Proceedings of the 25th annual conference on Computer graphics and interactive techniques, pages 311–320, 1998. [11] H. W. Jensen, S. R. Marschner, M. Levoy, and P. Hanrahan. A practical model for subsurface light transport. In SIGGRAPH ’01: Proceedings of the 28th annual conference on Computer graphics and interactive techniques, pages 511–518, 2001.
30
KAPITOLA 7. SEZNAM LITERATURY
[12] J.-R. Jim´enez and X. Pueyo. Interactive rendering of globally illuminated scenes including anisotropic and inhomogeneous participating media. The Visual Computer, 21(7):449–462, 2005. [13] J. T. Kajiya and B. P. V. Herzen. Ray tracing volume densities. In SIGGRAPH ’84: Proceedings of the 11th annual conference on Computer graphics and interactive techniques, pages 165–174, New York, NY, USA, 1984. ACM Press. [14] J. Kessenich, D. Baldwin, and R. Rost. The OpenGL shading language, 2006. http://www.opengl.org/documentation/glsl/. [15] R. V. Klassen. Modeling the effect of the atmosphere on light. ACM Trans. Graph., 6(3):215–237, 1987. [16] E. P. Lafortune and Y. D. Willems. Rendering Participating Media with Bidirectional Path Tracing. In Rendering Techniques ’96 (Proceedings of the Seventh Eurographics Workshop on Rendering), pages 91–100, 1996. [17] N. L. Max. Atmospheric illumination and shadows. In SIGGRAPH ’86: Proceedings of the 13th annual conference on Computer graphics and interactive techniques, pages 117–124, 1986. [18] N. L. Max. Efficient Light Propagation for Multiple Anisotropic Volume Scattering. In Fifth Eurographics Workshop on Rendering, pages 87–104, Darmstadt, Germany, 1994. [19] S. G. Narasimhan, M. Gupta, C. Donner, R. Ramamoorthi, S. K. Nayar, and H. W. Jensen. Acquiring scattering properties of participating media by dilution. In SIGGRAPH ’06: ACM SIGGRAPH 2006 Papers, pages 1003–1012, 2006. [20] S. G. Narasimhan and S. K. Nayar. Vision and the atmosphere. Int. J. Comput. Vision, 48(3):233–254, 2002. [21] S. G. Narasimhan and S. K. Nayar. Shedding light on the weather. In IEEE CVPR, 2003. [22] T. Nishita, Y. Miyawaki, and E. Nakamae. A shading model for atmospheric scattering considering luminous intensity distribution of light sources. In SIGGRAPH ’87: Proceedings of the 14th annual conference on Computer graphics and interactive techniques, pages 303–310, 1987. [23] S. Pattanaik and S. Mudur. Computation of global illumination in a participating medium by Monte Carlo simulation. The Journal of Visualisation and Computer Animation, 4(3):133–152, 1993.
KAPITOLA 7. SEZNAM LITERATURY
31
[24] M. Pauly, T. Kollig, and A. Keller. Metropolis light transport for participating media. In Proceedings of the Eurographics Workshop on Rendering Techniques 2000, pages 11–22, 2000. [25] F. Perez, I. Marten, X. Pueyo, and F. X. Sillion. Acceleration of Monte Carlo path tracing in general environments. In PG ’00: Proceedings of the 8th Pacific Conference on Computer Graphics and Applications, page 71, 2000. [26] A. J. Preetham, P. Shirley, and B. Smits. A practical analytic model for daylight. In SIGGRAPH ’99: Proceedings of the 26th annual conference on Computer graphics and interactive techniques, pages 91–100, 1999. [27] S. Premoˇze, M. Ashikhmin, and P. Shirley. Path integration for light transport in volumes. In EGRW ’03: Proceedings of the 14th Eurographics workshop on Rendering, pages 52–63, 2003. [28] S. Premoˇze, M. Ashikhmin, J. Tesendorf, R. Ramamoorthi, and S.Nayar. Practical rendering of multiple scattering effects in participating media. In EuroGraphics Symposium on Rendering., pages 363–374, 2004. [29] R. Ramamoorthi and P. Hanrahan. Frequency space environment map rendering. In SIGGRAPH ’02: Proceedings of the 29th annual conference on Computer graphics and interactive techniques, pages 517–526, 2002. [30] H. Rushmeier. Rendering participating media: problems and solutions from application areas. In 5th Eurographics workshop on rendering, pages 35–56, 1994. [31] J. Stam and E. Fiume. Depicting fire and other gaseous phenomena using diffusion processes. In SIGGRAPH ’95: Proceedings of the 22nd annual conference on Computer graphics and interactive techniques, pages 129–136, 1995. [32] B. Sun, R. Ramamoorthi, S. G. Narasimhan, and S. K. Nayar. A practical analytic single scattering model for real time rendering. In SIGGRAPH ’05: ACM SIGGRAPH 2005 Papers, pages 1040–1049, 2005. [33] D. A. V. Biri, S. Michelin. Real-time single scattering with shadows. In In review http://igm.univ-mlv.fr/ biri/recherche.php, 2004.
32
KAPITOLA 7. SEZNAM LITERATURY
ˇ ´ILOHA A. OBSAH PRILO ˇ ˇ EHO ´ PR ZEN CD
A Obsah pˇ riloˇ zen´ eho CD • Text/ thesis/ - adres´aˇr s texty diplomov´eho projektu ve form´atu PDF src/ - zdrojov´e texty souboru diplomov´eho projektu ve form´atu LATEX
• Aplication/ bin/ - bin´arn´ı soubory testovac´ı aplikace src/ - zdrojov´e soubory testovac´ı aplikace hlp/ - popis ovl´ad´an´ı programu
33