Progressive photon mapping na GPU



Podobné dokumenty
Zobrazování a osvětlování

Vs eobecne podmi nky ve rnostni ho programu spolec nosti Victoria-Tip.

Fotonové mapy. Martin Bulant 21. března Fotonové mapy jsou podobné obousměrnému sledování cest, ale odlišují se tím,

Osvětlovací modely v počítačové grafice

Co je to diferenciální rovnice Rovnice se separovanými proměnnými Aplikace. Diferenciální rovnice I

Studijnı materia ly. Pro listova nı dokumentem NEpouz ı vejte kolec ko mys i nebo zvolte moz nost Full Screen. RNDr. Rudolf Schwarz, CSc.

Operace s maticemi. Studijnı materia ly. Pro listova nı dokumentem NEpouz ı vejte kolec ko mys i nebo zvolte moz nost Full Screen.

Počítačová grafika III Photon mapping. Jaroslav Křivánek, MFF UK

Photon-Mapping Josef Pelikán CGG MFF UK Praha.

Operace s maticemi. Studijnı materia ly. Pro listova nı dokumentem NEpouz ı vejte kolec ko mys i nebo zvolte moz nost Full Screen.

Počítačová grafika III Photon mapping. Jaroslav Křivánek, MFF UK

Transformace Aplikace Trojný integrál. Objem, hmotnost, moment

Vizualizace 3d designu ve strojírenství

3. Polynomy Verze 338.

Realistický rendering

Fotonové mapy. Leonid Buneev

1.7. Mechanické kmitání

Difrakce na mřížce. Úkoly měření: Použité přístroje a pomůcky: Základní pojmy, teoretický úvod: Úloha č. 7

ELEKTRICKÉ SVĚTLO 1 Řešené příklady

GPGPU. Jan Faigl. Gerstnerova Laboratoř pro inteligentní rozhodování a řízení České vysoké učení technické v Praze

ELEKTRICKÉ SVĚTLO 1 Řešené příklady

LBP, HoG Ing. Marek Hrúz Ph.D. Plzeň Katedra kybernetiky 29. října 2015

Studentská tvůrčí a odborná činnost STOČ 2015

7. V Ї 4 odstavce 2 a 3 zneяjѕт:

Počítačová grafika III Úvod

Přibližný výpočet efektů globálního osvětlení na GPU

Přijímací řízení pro nástup do 1. ročníku školního roku 2016/2017 (ze 7. třídy ZŠ)

1. Věc: Výzva k podání nabídky na veřejnou zakázku malého rozsahu s názvem Dopravní automobil s požárním přívěsem nákladním

Fotorealistická syntéza obrazu Josef Pelikán, MFF UK Praha

Gaussovou eliminac nı metodou

Hodnost matice. Studijnı materia ly. Pro listova nı dokumentem NEpouz ı vejte kolec ko mys i nebo zvolte moz nost Full Screen.

Matematický model malířského robota

Pokročilé osvětlovací techniky Josef Pelikán, MFF UK Praha

GPGPU Aplikace GPGPU. Obecné výpočty na grafických procesorech. Jan Vacata

Čtyři atesty a přece není pravá

Katedra informatiky, Univerzita Palackého v Olomouci. 27. listopadu 2013

Raciona lnı lomena funkce, rozklad na parcia lnı zlomky

Počítačová grafika III Důležitost, BPT. Jaroslav Křivánek, MFF UK

AKCELERACE EVOLUCE PRAVIDEL CELULÁRNÍCH AUTOMATŮ NA GPU

A4M39RSO. Sledování cest (Path tracing) Vlastimil Havran ČVUT v Praze CTU Prague Verze 2014

Počítačová grafika III Bidirectional path tracing. Jaroslav Křivánek, MFF UK

Vyřizuje: Tel.: Fax: Datum: Oznámení o návrhu stanovení místní úpravy provozu na místní komunikaci a silnici

Geekovo Minimum. Počítačové Grafiky. Nadpis 1 Nadpis 2 Nadpis 3. Božetěchova 2, Brno

Počítačová grafika III Úvod

Tvorba WWW stránek. Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu

SOUTĚŽNÍ ŘÁD soutěží Jihomoravské oblasti Českého svazu orientačních sportů v orientačním běhu

A. VŠEOBECNÉ PODMÍNKY. Úvodní ustanovení

Statistika ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE FAKULTA DOPRAVNÍ. Jiří Volf, Adam Kratochvíl, Kateřina Žáková. Semestrální práce - 0 -

CGI. Computer generated imagery Počítačové triky Animované filmy Počítačové hry. Technologické trendy v AV tvorbě, CGI 2

Vlastnosti a zkoušení materiálů. Přednáška č.2 Poruchy krystalické mřížky

Pravidla soute že Free internet from MOBIL.CZ

Závěrečná zpráva projektu Experimentální výpočetní grid pro numerickou lineární algebru

TECHNICKÁ UNIVERZITA V LIBERCI

SimOS. Jakub Doležal Radek Hlaváček Michael Očenášek Marek Reimer

269/2015 Sb. VYHLÁŠKA

Osvětlování a stínování

Model dvanáctipulzního usměrňovače

Principy fotorealistického zobrazování

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

Darujme.cz. Podrobné statistiky 2015

Zásady pro vypracování disertační práce Fakulty strojní VŠB-TUO

z 0 3a 0 0dosti o vyda 0 0n rozhodnut o um ste 0 3n stavby

Multikriteri ln optimalizace proces 0 1 v elektrotechnice

Zpracování digitalizovaného obrazu (ZDO) - Analýza pohybu

Hardwarová akcelerace HD videa v návaznosti na architektury čipu grafických karet

Exponenciála matice a její užití. fundamentálních matic. Užití mocninných řad pro rovnice druhého řádu

Měření hustoty kapaliny z periody kmitů zkumavky

SMĚRNICE Zjednodušená analýza rizika blesku

FAKULTA INFORMATIKY A MANAGEMENTU UNIVERZITA HRADEC KRÁLOVÉ SEMESTRÁLNÍ PRÁCE. Modely operačního výzkumu 1. Studijní obor:

ÚAMT FEKT VUT. mikroprocesor Rabbit. Diplomová prá ce. Tomá škreuzwieser. Brno

c sin Příklad 2 : v trojúhelníku ABC platí : a = 11,6 dm, c = 9 dm, α = Vypočtěte stranu b a zbývající úhly.

Laserový skenovací systém LORS vývoj a testování přesnosti

Smlouva o poskytnutí služby

Tlačítkový spínač s regulací svitu pro LED pásky TOL-02

Tisíce uživatelů v bance pracují lépe díky využití okamžitých informací o stavu kritických systémů

a m1 a m2 a mn zobrazení. Operaci násobení u matic budeme definovat jiným způsobem.

REKONSTRUKCE A DOSTAVBA CHODNÍKU V ULICI PETRA BEZRUČE

Elektrické. MP - Ampérmetr A U I R. Naměřená hodnota proudu 5 A znamená, že měřená veličina je 5 x větší než jednotka - A

Informace o probíhající stavbě za měsíce září až říjen 2012 (68. KD KD)

( ) Úloha č. 9. Měření rychlosti zvuku a Poissonovy konstanty

OBSAH...2 POPIS ZAŘ ÍZENÍ...3

Pokročilá architektura počítačů

10 je 0,1; nebo taky, že 256

PŘEDSTAVENÍ GRAFICKÉHO PROCESORU NVIDIA G200

Proudìní fotosférického plazmatu po sluneèním povrchu

Mobilní verze. 109 Jak získat speciální aplikaci pro mobilní telefon. 110 Jak používat Facebook pro dotykové telefony

Teoretické úlohy celostátního kola 53. ročníku FO

Žáci mají k dispozici pracovní list. Formou kolektivní diskuze a výkladu si osvojí grafickou minimalizaci zápisu logické funkce

Několik dalších pokusů s termocitlivými fóliemi

X39RSO/A4M39RSO Vychýlené (biased) metody globálního osvětlení. Vlastimil Havran ČVUT v Praze CTU Prague Verze 2011

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

Stručně k radarové interferometrii

DOBA KAMENNÁ: Styl je cíl

Zápis. Omluveni. Bod č. 1 programu - Zahájení, program 15. schůze rady městyse

insul tube & insul sheet

Ministryne 0 3: JUDr. Buzkova 0 0 v. r.

Digitalizace signálu (obraz, zvuk)

Uživatelský manuál pro práci se stránkami OMS a MS provozované portálem Myslivost.cz. Verze 1.0

VYUŽITÍ MATLABU PŘI NÁVRHU FUZZY LOGICKÉHO REGULÁTORU. Ing. Aleš Hrdlička

The University of Plymouth

Transkript:

2015 http://excel.fit.vutbr.cz Progressive photon mapping na GPU Tomáš Lysek* Abstrakt Pro tvorbu fotorealistických obrazů je nutné použít časově náročné výpočetní techniky - global illumination techniky. Mezi nejnovější techniky patří photon mapping a jeho progresivní varianta. Tento článek se bude zabývat implementací progressive photon mappingu (ppm) na dnešních grafických kartách a porovná rychlost implementace mezi CPU variantou a GPU variantou. Dále vybere nejpomalejší blok ppm a navrhne urychlení. Navrhnuté urychlení je zclustrování hitpointů do blízkých clusterů a použítí pravidelné mřížky pro photony. Klíčová slova: progressive photon mapping global illumination gpgpu Přiložené materiály: N/A *xlysek03@stud.fit.vutbr.cz, Faculty of Information Technology, Brno University of Technology 1. Introduction Od začátku počítačové grafiky byla snaha o co nejrealističtější výsledné snímky. Pro co nejrealističtější obrazy je potřeba provést složitou fyzikální simulaci světla, která je velmi časově náročná. Poměrně novou fotorealistickou metodou je metoda fotonových map (photon mapping) a jeho nejnovější varianta progressive photon mapping. Poslední dobou nastal velký boom GPGPU počítání, grafickou kartu má v dnešní době skoro každý PC a proto se zdá jako zajmavá varianta vyzkoušet akcelerovat progressive photon mapping na grafické kartě. Tato práce nejprve navrhne jednoduchou gpu implementaci progressive photon mappingu a poté pro nejpomalejší blok navrhne urychlení. Nejpomalejší blok byl vybrán a tento blok se pomocí jednoduché akcelerační struktury podařilo urychlit oproti CPU implementace více než 30 krát. 2. Related work Nejlepší fotorealistické výsledky se v dnešní době dosahují pomocí třídy technik, které se nazývají global illumination (globální osvětlení). Ne všechny global illumination techniky jsou rozumně implementovatelné na GPU a proto je potřeba vybrat vhodnou techniku. Tyto metody se snaží o korektní simulaci světla ve scéně a základním kamenem pro tyto metody byla zobrazovací rovnice (rendering equation), kterou v roce 1986 sepsal James T. Kajiya[1]. Zobrazovací rovnice popisuje výpočet odraženého jasu (radiance) v určitém bodě. Popisuje to jako součet (integrál) všech příspěvků osvětlení ze všech směrů přes hemisféru kolem vyšetřovaného bodu. Pomocí tohoto přístupu je možné analyticky vypočítat osvětlení scény, problém ovšem nastává s tím, že pro rozumně složité scény je toto řešení nerealizovatelné - z časových důvodu. V článku o zobrazovací rovnici James T. Kajia[1] narvhnul způsob jak vypočítat tuto rovnici a to tím způsobem, že pro výpočet integrálu použil monte carlo metody. Tato metoda se označuje jako path tracing a všechny metody, které vychází z path tracingu se nazývají monte carlo raytracing metody. Path tracing funguje podobně jako raytracing, vyšle se paprsek z oka (kamery), který putuje do scény. Při průsečíku paprsku se scénou v bodě x se vyšle sekundární paprsek náhodným směrem a ten se vyšetří. Protože náhodný paprsek nedokáže vypočítat přesně osvětlení bodu x vyšle se více paprsku z daného pixelu a prošetří více náhodných cest - odtud název path tracing. Rozšířením path tracnigu byla v roce 1993 [2] a v roce 1994 [3] technika zvaná bidirectional path tracing. Tato technika prohledává cesty jak od kamery

tak od světla najednou a poté vypočte jaký příspěvek májí obě dvě cesty mezi sebou a podle toho spočte osvětlení. Dalším rozšířením path tracingu je technika zvaná Metropolis Problém monte carlo metod je ten, že pro dobré fotorealistické výsledky je potřeba projít mnoho cest každým pixelem. V literatuře se píše, že běžné číslo jsou tisíce cest na pixel, z čehož vyplývá obrovská časová náročnost. Další možností je použít novou techniku zvanou Photon mapping. Photon mapping byl vymyšlen v Henrikem Wann Jensenem v roce 1996 [4]. Photon mapping je dvou-průchodová technika, která v prvním kroce spočítá příspěvek světla ve scéně vzorkováním světla. Jeden vzorek světla - foton - je prošetřen scénou podobně jako paprsek u raytracingu a při dopadu na difůzní povrch je foton uložen do fotonové mapy. Poté v druhém průchodu, se při výpočtu lokálního osvětlovacího modelu vypočte nepřímé osvětlení z nejbližších fotonů uložených ve fotonové mapě. Pro dobré výsledky pomocí klasického photon mappingu je potřeba vyslat mnoho (desítky milonů) fotonů ze světelných zdrojů, což má za následek velkou mapu fotonů - z toho plyne velká pamět ová složitost - a navíc čím víc fotonů je uložených ve fotonové mapě, tím pomalejší vyhledávání ve fotonové mapě je. Problém s velikosti fotonové mapy se snaží řešit progresivní varianta photon mappingu - progressive photon mapping, která vyšle ze světelného zdroje pouze část fotonů, pomocí této části spočítá osvětlení, vyslané fotony zahodí a v další iteraci vyšle znova menší část fotonů, přičte osvětlení a takhle pořád dokola. Progressive photon mapping Progressive photon mapping se jeví jako jako zajmavá metoda pro implementaci na grafické kartě - malá pamět ová složitost, iterační výpočet, velká koherence. Proto tato sekce rozepíše teorii za progressive photon mappingem trochu do hloubky. V klasickém photon mappingu se jas v bodě x a směru ω spočítá jako: L r (x, ω) 1 N πr 2 f (x, ω, ω p ) Φ p (x, ω p ) (1) p=1 kde Φ p (x, ω p ) je záře z fotonu p uložena ve fotonové mapě a f (x, ω, ω p ) je BRDF funkce. Suma zahrnuje N nejbližších fotonů z bodu x ve fotonové mapě. Jak již bylo zmíněno, problém photon mappingu je v jeji časové a pamět ové složitosti. Při výpočtu je photon mapping limitován operační pamětí PC a při velké fotonové mapě je prohledávání taky pomalejší. Právě proto byla snaha rozdělit jednu velkou fotonovou mapu na mnoho menších fotonových map a z nich spočítat osvětlení. Jednou jednoduchou variantou bylo vypočíst n-krát klasický foton mapping s menším počtem fotonů a poté výsledky jednotlivých iterací zprůměrovat, toto řešení bylo rychlejší ale nevedlo k konzistentnímu (správnému) výsledku. Další možnost byla vymyšlena právě pomocí progressive photon mappingu, která vhodně připočítá osvětlení dané iterace k předcházející iteraci. Obrázek 1. Schéma progressive photon mappingu[5] Obrázek 1 zobrazuje schéma progresive photon mappingu. Nejprve je nad scénou vypočítán raytracing, v průsečících paprsků s difůzním povrchem je uložený bod - tzv. hitpoint. V hitpointu je uložena pozice, barva, souřadnice ve výsledném obrazku, poloměr a počet fotonů, které přispěly k osvětlení daného hitpointu. Druhá část je rozdělena do iterací, kde se vždy vyšle určitá část fotonů, v každém hitpointu se naleznou všechny fotony v jeho poloměru, vypočte se podle nich příspěvek osvetlení, progresivně se připočte k již vypočtenému osvětlení. Pote se vypočítané fotony zahodí a celý proces vysílání fotonů se opakuje (teoreticky) donekonečna. Poloměr v hitpointu by se měl v každé iteraci zmenšovat, což vede k zpřesňování již vypočteného řešení, nový poloměr se vypočítá jako: ˆR(x) = R(x) N(x) + αm(x) N(x) + M(x) (2) kde R(x) respektive ˆR(x) je poloměr v hitpointu x respektive nový poloměr v hitpointu x. N(x) je počet již uložených fotonů (z předcházejících iterací) v hitpointu x, M(x) je počet nových fotonů ze zrovna počítané iteraci v poloměru R(x). α je hodnota v rozsahu 0-1 a udává jak moc nových fotonů bude přidáno do výsledného osvětlení a jak rychle se bude poloměr zmenšovat. Nová hodnota osvětlení τ ˆN (x, ω) v bodě x je spočtena jako:

τ ˆN (x, ω) = τ N(x) + αm(x) N+M(x, ω) N(x) + M(x) (3) kde τ N+M (x, ω) je suma jasu z předchozích iterací a z nynější iterace spočtena rovnicí 1 a hodnoty N(x), M(x) a α jsou stejné hodnoty jako v rovnici 2. Výsledné osvětlení v bodě x směřující směrem ω je spočteno jako: L(x, ω) 1 τ ˆN (x, ω) (4) π ˆR(x) 2 N emmited Použitím progressive photon mappingu je navíc možné docílit některých fotorealistických elementu, které jsou velmi složité u ostatních metod globálního osvětlení, jako například kaustiky, SDS cesty a jiné. (SDS cesty jsou z názvu specular-diffuse-specular a klasická ukázka těchto cest jsou například kaustiky na dně bazénu). Jednoduchá GPGPU dekompozice Progressive photon mapping může být rozdělen do několika nezávislých bloků: raytracing, photon tracing, hitpoint illumination a syntéza obrazu. Raytracing Raytracing může být chápán jako sekvenční procházení pixelů výsledného obrazu a prohledávání scény pomocí patřičných paprsků. Procházecí rutina je pro všechny paprsky stejná, takže paralelizace je velmi jednoduchá - jedno vlákno - jeden pixel. Oproti klasickému raytracingu, tento raytracing je rozšířen o uložení hitpointu do paměti. Jedna věc musí být poznamenána, a to ta, že raytracing je v základní podobě rekurzivní algoritmus. V dnešní době grafické karty neumí zpracovat rekurzivní volání funkce a proto je potřeba upravit raytracing aby fungoval iteračně. Photon tracing Blok photon tracingu je velmi podobný raytracingu, neukládá ovšem hitpointy, ale ukládá fotony. Pro procházení fotonového paprsku je použit velmi podobná rutina jako u raytracingu. Hitpoint illumination V tomto bloku se paralelně pro každý hitpoint vypočte nové osvětlení hitpointu x. Nejjednodušší (a taky nejnaivnější) varianta je projít všechny fotony na daném objektu a ty které mají vzdálenost od bodu x menší než R(x) se zahrnou do výpočtu. Syntéza obrazu Poslední blok načte paralelně hitpoint, vypočte barvu podle rovnice 4 a uloží spočtenou barvu na pozici ve framebufferu. 3. Evaluace jednoduché implementace Byla provedena jednoduchá implementace jednotlivých bloků. I když většina bloků je velmi naivních, tak tato implementace slouží pouze k nalezení nejslabších míst photon mappingu. Tato implementace byla otestovaná na jednoduché scéně a obrázek 2 ukazuje postupné - progresivní - zlepšování výsledné kvality obrazu. Byla také provedena CPU implementace, která byla rozšířena o rychlejší hledání fotonů pomocí kdstromu. CPU a GPU implementace byla evaluována na notebooku s Intel i7-4702mq processoru, napsána v c++ a kompilována Intel C++ 15.0 kompilátorem. GPU na které běžela OpenCL implementace byla spušt ěna na grafice GeForce GT 750M. Rychlost CPU implementace byla měřena pomocí std::chrono knihovny a GPU implementace pomocí nvidia nsight. GPU CPU Raytracing 0.706 ms 1172 ms Photon tracing 7.897 ms 317 ms Hitpoint Illumination 2041 ms 1593 ms Synthesize 0.247 ms 3 ms Tabulka 1. Výkonost mezi GPU a CPU variantou algoritmu při rozlišení 320*280 a při velikosti fotonové mapy 100 tisíc fotonů. GPU CPU Raytracing 12.107 ms 6 197 ms Photon tracing 7.897 ms 317 ms Hitpoint Illumination 38 603 ms 23 957 ms Synthesize 4.924 ms 91 ms Tabulka 2. Výkonost mezi GPU a CPU variantou algoritmu při rozlišení 1280*1080 a při velikosti fotonové mapy 100 tisíc fotonů. Tabulky 1 a 2 ukazují výkonost mezi GPU a CPU implementací. Jak je možné z těchto tabulek vidět, všechny bloky kromě Hitpoint illumination se na GPU značně urychlily. Jednu věc je potřeba podotknout, na CPU funguje v bloku Hitpoint illumination vyledávání pomocí kd-stromu, pokud se na cpu použije stejná metoda - tedy bruteforce - tak při malém rozlišení 320*280 trvá tento blok 68 sekund. Rychlost raytracingu a photon tracingu je ovlivněna počtem pixelů / fotonů a složitostí scény. I když byla testovací scéna velmi jednoduchá, photon tracing a raytracing nejsou nejslabší místa. Navíc pro komplexnější scény existují sofistikované algoritmy a datové struktury, pomocí kterých se dá dosáhnout vysoká výkonost

nevadí, protože i v mnohem komplexnější scéně se řeší naprosto stejné problémy a časově (pokud se zachová počet fotonů a rozlišení) budou stejné. 4. Návrh akcelerace Zmiňovaný hitpoint illumination blok je naprogramovaný velmi naivně. Tato sekce popíše postupně jaké akcelerační techniky se navrhly, použily a byly stavební bloky pro nejrychlejší řešení. Lokální pamět V naivním řešení každý thread načítal postupně z globální paměti jeden foton za druhým. Přístup do globální paměti je na GPU velmi drahý, proto první akcelerační technika je využítí lokální pamět i, do které je mnohem rychlejší přístup. V každé workgroupě se připraví lokální pamět a přetáhne se blok globální paměti do lokální paměti. Všechny thready v workgroupě zpracují všechny fotony v lokální paměti a poté se načte další blok paměti a tak pořád dokola. Obrázek 2. Výsledky postupného počítání progressive photon mappingu. Na vrchním obrázku je výsledek s jednou iterací, uprostřed s deseti iteracemi a dole se sto iteracemi. i při komplexních scénách a pokud by se netvořil jednoduchý renderer, tak je možné použít nvidia OptiX framework, který má zabudovaný a vysoce optimalizovaný raytracing, který by se na tyto dva bloky dal použít. Hitpoint illumination blok je nejpomalejší blok. Je to dáno tím, že používaná technika je velmi naivní a tento blok testuje velké množství fotonů, které nejsou vůbec (dáno topologií scény) potřeba. Blok vybraný k akceleraci je teda hitpoint illumination blok. To že je scéna velmi jednoduchá v tomto případě vůbec Řazení fotonů Když se počítá osvětlení hitpointu x, tak se do výpočtu osvětlení musí zařadit pouze ty fotony, které leží na stejném objektu jako hitpoint x. Proto když máme jediné pole fotonů, tak velká část fotonů se zavrhne, protože leží na jiném objektu a drahé načítání bylo zbytečné. Navrhnuté řešení je rozdělit jedno pole fotonů na N polí fotonů, kde v každém poli jsou fotony pouze z jednoho objektu. Proto se mezi photon tracing blok a hitpoint illumination blok vloží blok na rozřazení fotonů a tento blok roztřídí fotony do příslušných polí. Rychlost tohoto bloku je zanedbatelná (1.5ms) v porovnání s rychlostí bloku hitpoint illumination. Protože není zajištěno, že všechny hitpointy v jedné workgroupě budou ze stejného objektu, není možné použít v tomto případě lokální pamět. Řazení hitpointů Aby se dosáhla větší koherence, je nutné zajistit, že všechny hitpointy v jedné workgroupě budou z jednoho objektu, je nutné použít nějaký systém rozřazení. Toto rozřazení je možné provést na CPU, protože bude v celém procesu použité pouze jednou. Jediný problém, který nastává je při přechodu (v poli) mezi jednotlivými objekty. Je nutné vložit do pole s hitpointy takzvané filler hitpointy, které jsou neaktivní a zajišt ují pouze to, že v workgoupě budou hitpointy pouze z jednoho objektu, nebo právě filler hitpointy.

R azenı hitpointu a loka lnı pame t Protoz e nynı jsou v jedne workgroupe pouze hitpointy z jednoho objektu, je moz ne slouc it vs echny pr edchozı pr ı stupy a pouz ı t loka lnı pame t a rozr azene fotony najednou. Klastrova nı hitpointu a spatial grid Pr edchozı r es enı i kdyz je rychle, por a d prohleda va velke mnoz stvı zbytec ny ch fotonu. Kdyz se podı va me na CPU implementaci pomocı kd-stromu, jde vide t, z e CPU akcelerac nı technika na vyhleda va nı fotonu pr inesla obrovske zrychlenı, proto by bylo vhodne pouz ı t podobnou akcelerac nı techiku i na GPU. Kd-strom je ovs em te z ko sestrojitelny za be hu na GPU. Proto vybrane r es enı je pravidelna mr ı z ka. Pr i tvorbe pravidelne mr ı z ky pro jeden objekt, se nejprve vypoc te bounding box dane ho objektu. Pro jednoduchost a adaptabilitu se vyuz ije de lı cı faktor n, ktery urc uje kolikra t se bude de lit nejdels ı strana bounding boxu a z jednoho dı lku se pote vypoc te s ı r ka pravidelne mr ı z ky. Pr i urc ova nı v jake c a sti mr ı zky se bod x nacha zı, stac ı pouze vypoc ı st vektor sme r ujı cı z minima lnı ho bodu bounding boxu do bodu x a pote pode lit kaz dou sloz ku s ı r kou jednoho boxu pravidelne mr ı z ky. Tı mto po zaokrouhlenı sme rem dolu vypadnou celoc ı selne hodnoty x, y, z, ktere uda vajı pozici v mr ı z ce. workgroupy a nejefektivne js ı velikost worgkroupy se mu z e lis it dle rozlis enı. 5. Vyhodnocenı vy sledku Vs echny akcelerac nı techniky, ktere byly pr edstavene v minule sekci byly naimplementova ny a byla zme r ena jejich rychlost na rozlis enı 1920*1080 a 320*280. Naive solution Local memory Photon sorting Hitpoint sorting Hitpoint sorting, local memory 320*280 2041 ms 1109 ms 611 ms 484 ms 327 ms 1920*1080 38 603 ms 17 750 ms 10 539 ms 8 384 ms 5 422 ms Tabulka 3. Vyhodnocenı vy sledku navrhnuty ch akcelerac nı ch r es enı. Tabulka 3 ukazuje, z e postupne vs echny postupy bez pravidelne pr ina s ely z a dane urychlenı a postupne se podar ilo pr ekonat a zı skat zrychlenı oproti CPU variante. Vs echny tyto testy byly vykona ny pomocı OpenCL. Pro vy poc et vzda lenosti byla pouz ita zabudovana funkce distance(). Jakmile se funkce distance() nahradila za ruc nı vypoc ı ta nı vzda lenosti, vedlo to k skoro 3x rychlejs ı mu vy sledku. A tedy rychlost hitpoint illumination bloku je pr i rozlis enı 320*280 125 ms a pr i rozlis enı 1920*1080 1 941ms. Testova nı pravidelne mr ı z ky je nutne prove st odde lene a to z du vodu velke ho mnoz stvı filler hitpointu. Pr i rozlis enı 1920*1080 ve vy sledne m vy poc tu bylo pr ı tomno 33% filler hitpointu a tedy algoritmus fungoval pouze na 66%. Je nutne tedy uve st c asy i bez pravidelne mr ı z ky. Tabulka 4 ukazuje fina lnı a maxima lnı zrychlenı navrhovany ch metod. 320*280 1920*1080 Hitpoint sorting, local memory 172 ms 2 852 ms Grid structure 87 ms 730 ms Tabulka 4. Rychlost pravidelne mr ı z ky. Obra zek 3. Klastry hitpointu vytvor ene algoritmem k-means Poslednı m proble mem, ktery je potr eba vyr es it, je maxima lnı koherence hitpointu, coz znamena, z e je nutne zajistit, aby hitpointy v jedne workgroupe byly co nejblı z e (prostorove ) u sebe a tı mpa dem budou procha zet stejne podprostory mr ı z ky. Pro toto zajis te nı je vyuz ito na CPU strane algoritmu k-means, ktery vytvor ı na poli hitpointu klastry. Velky proble m algoritmu k-means je ten, z e nenı moz ne zajistit aby vracel klustry fixnı velikosti a tedy mnoho filler hitpointu je pouz ito. Obra zek 3 zna zorn uje jak vypadajı klastry ve sce ne. Velikost klastru je omezena podle velikosti 6. Za ve r Tato pra ce popisuje experimenta lnı implementaci progresivnı ho photon mappingu na graficke karte. Pro kaz dy dekomponovany blok je navrhnuta gpu implementace a nejpomalejs ı blok byl postupne zrychleny 52 kra t oproti naivnı implementaci a 32kra t oproti CPU implementaci. V dals ı m pokrac ova nı pra ce by bylo vhodne vymyslet jiny algoritmus klastrova nı, napr ı klad pomocı evoluc nı ch algoritmu navrhnout takove rozr azenı hitpointu, ktere snı z ı chybu z 33% na mens ı hodnotu a vyuz ije se ve ts ı potencia l graficke karty.

Poděkování Chtěl bych poděkovat vedoucímu mé diplomové práce profesorovi Pavlovi Zemčíkovi za užitečné rady a trpělivost, kterou se mnou měl. Literatura [1] James T. Kajiya. The rendering equation. SIG- GRAPH Comput. Graph., 20(4):143 150, August 1986. [2] Eric P. Lafortune and Yves D. Willems. Bidirectional path tracing. 1993. [3] Eric Veach and Leonidas Guibas. Bidirectional Estimators for Light Transport. 1994. [4] Henrik Wann Jensen. Global illumination using photon maps. In Proceedings of the eurographics workshop on Rendering techniques 96, pages 21 30, London, UK, UK, 1996. Springer-Verlag. [5] Toshiya Hachisuka, Shinji Ogaki, and Henrik Wann Jensen. Progressive photon mapping. ACM Trans. Graph., 27(5):130:1 130:8, December 2008.