Ray Tracing op GPU en CPU - EDM - UHasselt
Ray Tracing op GPU en CPU - EDM - UHasselt
Ray Tracing op GPU en CPU - EDM - UHasselt
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1 2<br />
4 5<br />
Figuur 5.5: Regular grid bestaande uit 6 voxels. Elke driehoek bevindt zich in<br />
één of meerdere voxels.Voxel 1 bevat ge<strong>en</strong> driehoek<strong>en</strong>, voxel 2 <strong>en</strong> 4 bevatt<strong>en</strong> 1<br />
driehoek, voxel 5 <strong>en</strong> 6 bevatt<strong>en</strong> 2 driehoek<strong>en</strong> <strong>en</strong> voxel 3 bevat 3 driehoek<strong>en</strong>.<br />
kan word<strong>en</strong>, t.o.v. O(n), waarbij n het aantal driehoek<strong>en</strong> is. Indi<strong>en</strong> n voldo<strong>en</strong>de<br />
klein is, zorgt e<strong>en</strong> regular grid niet voor e<strong>en</strong> bottl<strong>en</strong>eck. Aangezi<strong>en</strong> de focus van<br />
deze thesis eerder ligt <strong>op</strong> het vergelijk<strong>en</strong> van de r<strong>en</strong>dertijd<strong>en</strong> tuss<strong>en</strong> e<strong>en</strong> zeer<br />
analoge <strong>CPU</strong> <strong>en</strong> <strong>GPU</strong> implem<strong>en</strong>tatie, lijkt e<strong>en</strong> regular grid mij e<strong>en</strong> adequate<br />
keuze.<br />
Voor de <strong>op</strong>slag van het grid mak<strong>en</strong> we gebruik van twee textures. Eén texture<br />
zull<strong>en</strong> we gebruik<strong>en</strong> om per gridcel de lijst van driehoek<strong>en</strong> die hierin bevat zijn,<br />
bij te houd<strong>en</strong>. De tweede texture houdt dan per grid cel e<strong>en</strong> index bij waar de<br />
bijbehor<strong>en</strong>de driehoek lijst zich in de eerste texture bevindt. We zull<strong>en</strong> naar<br />
deze textures verwijz<strong>en</strong> door ze respectievelijk tdata <strong>en</strong> tindex te noem<strong>en</strong>.<br />
Laat tdata e<strong>en</strong> matrix zijn van RGBA tupels, waarvan we <strong>en</strong>kel de R nuttig<br />
zull<strong>en</strong> gebruik<strong>en</strong>. Ook dit is e<strong>en</strong> beslissing die g<strong>en</strong>om<strong>en</strong> is uit effeciëntie overweging<strong>en</strong>.<br />
De gegev<strong>en</strong>s die we in tdata w<strong>en</strong>s<strong>en</strong> te st<strong>op</strong>p<strong>en</strong>, zull<strong>en</strong> verzameling<strong>en</strong><br />
van driehoek<strong>en</strong> zijn, of maw e<strong>en</strong> lijst van verzameling<strong>en</strong> van driehoek. We<br />
beschouw<strong>en</strong> e<strong>en</strong> e<strong>en</strong>voudig voorbeeld, ter ondersteuning van de verdere uite<strong>en</strong>zetting.<br />
Figuur 5.5 geeft e<strong>en</strong> virtuele scène weer, waarbij de primitiev<strong>en</strong> (in dit<br />
geval driehoek<strong>en</strong>), ondergebracht zijn in e<strong>en</strong> gridstructuur. De voxels, ook wel<br />
cell<strong>en</strong> g<strong>en</strong>oemd, zijn g<strong>en</strong>ummerd van 1 tot 6. Hieruit wordt dan de lijst van<br />
driehoekverzameling<strong>en</strong> geg<strong>en</strong>ereerd. In figuur 5.6 is dit schematisch weergegev<strong>en</strong>.<br />
Nu zijn we aangekom<strong>en</strong> <strong>op</strong> het punt dat we deze symbolische lijst gaan<br />
omzett<strong>en</strong> naar texture data. Dit kunn<strong>en</strong> we e<strong>en</strong>voudig door verzameling per<br />
verzameling om te zett<strong>en</strong>, <strong>en</strong> die achter elkaar te plaats<strong>en</strong>. Merk <strong>op</strong> dat we<br />
met achter elkaar plaats<strong>en</strong> bedoel<strong>en</strong> dat de texture kolom per kolom, rij per<br />
rij gevuld wordt. We moet<strong>en</strong> eerst nog wel definiër<strong>en</strong> hoe we e<strong>en</strong> verzameling<br />
driehoek<strong>en</strong> gaan voorstell<strong>en</strong>. Dit do<strong>en</strong> we door de volgnummers van de betreff<strong>en</strong>de<br />
driehoek<strong>en</strong> achter elkaar te plaats<strong>en</strong>, beëindigt door e<strong>en</strong> -1. Wanneer we<br />
alle verzameling<strong>en</strong> achter elkaar plaats<strong>en</strong>, krijg<strong>en</strong> iets van de vorm 3 6 7 8 -1 2<br />
9 11 -1 2 -1 -1 10 13 . . . (voor e<strong>en</strong> willekeurige scène). Plaats nu elk van deze<br />
getall<strong>en</strong> in de R compon<strong>en</strong>t van de texture, <strong>en</strong> tdata is klaar.<br />
34<br />
6<br />
3