01.08.2013 Views

Ray Tracing op GPU en CPU - EDM - UHasselt

Ray Tracing op GPU en CPU - EDM - UHasselt

Ray Tracing op GPU en CPU - EDM - UHasselt

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!