Inverz fényútkövetés OpenCL környezetben

OData támogatás
Konzulens:
Dr. Szirmay-Kalos László
Irányítástechnika és Informatika Tanszék

A háromdimenziós modellező/tervező szoftverek (építészeti, autóipari stb.) által kreált modellek valósághű ábrázolása még mindig lényegesen egyszerűbb és költséghatékonyabb megoldás, mint tényleg felépíteni valamit, csak hogy lássuk, hogy hogy nézne ki.

Azonban a fizikailag helyes képszintézis nem triviális feladat, és meglehetősen nagy számításigényű (ugyanis a valóság modellezésén alapul). Az ilyen algoritmusokat globális illuminációs algoritmusoknak nevezzük. A dolgozatomban a legalapvetőbbet, az úgynevezett inverz fényútkövetést mutatom be, OpenCL környezetben.

Ahhoz, hogy a fizika törvényeinek megfelelő képet kapjunk, felmerül pár kérdés. Hogyan modellezzük a diffúz felületeket? A sugarak hogyan verődnek róluk vissza? Milyen az ideális tükör? Hogyan modellezhetőek a fénytörő anyagok? Mik azok a Fresnel egyenletek?

A feladat rendkívül számításigényes, így jó lenne valamivel felgyorsítani a számolásokat. Dolgozatomban két dolgot használok: ész és nyers erő. Egyrészt, az objektumokat befoglaló keretek segítségével hatékonyan eldönthető (akár egy metszéspont számítással is), hogy akár több millió háromszöget tartalmazó objektumot el fogunk-e metszeni, másrészt a mai GPU-k teljesítménye messzemenően felülmúlja a processzorok teljesítményét (természetesen csak masszívan párhuzamos feladatban), így hát adódik a gondolat, hogy a számítások elvégzésére használjunk GPU-t.

A dolgozatban javaslatot adok a feladat független szálakra való dekompozíciójára, megmutatom a GPU használatával elérhető sebesség növekedést, egy működő megoldást mutatok a processzor és GPU feladatmegosztására OpenCL környezetben, valamint a fentebbi kérdésekre is válaszolok.

Végezetül, egy videó az elkészült szoftverről: https://www.youtube.com/watch?v=s_INaB_Ql9Y.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.