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.
Lr(x → Θ). Dit geeft volg<strong>en</strong>de e<strong>en</strong>voudigere vorm:<br />
waarbij<br />
L(x → Θ) = Le(x → Θ) + Lr(x → Θ)<br />
<br />
Lr(x → Θ) = fr(x, Ψ → Θ)L(x ← Ψ)cos(Nx, Ψ)dωΨ<br />
Θx<br />
Het gereflecteerde deel Lr(x → Θ) kan gezi<strong>en</strong> word<strong>en</strong> als de “som” van de<br />
inkom<strong>en</strong>de radiantie uit alle richting<strong>en</strong> Ψ, uitgesmeerd over het raak<strong>op</strong>pervlak,<br />
<strong>en</strong> daarvan <strong>en</strong>kel het weerkaatste deel in de richting Θ.<br />
Voor de m<strong>en</strong>s<strong>en</strong> die e<strong>en</strong> meer formele <strong>en</strong> volledigere beschrijving w<strong>en</strong>s<strong>en</strong> inzake<br />
r<strong>en</strong>dering vergelijking ed., word<strong>en</strong> doorverwez<strong>en</strong> naar het boek “Advanced<br />
Global Illumination” [DBB03].<br />
2.2 <strong>Ray</strong> tracing<br />
<strong>Ray</strong> tracing is e<strong>en</strong> techniek om beeld<strong>en</strong> te g<strong>en</strong>erer<strong>en</strong> van virtuele scènes. In<br />
deze sectie zal het ray tracing algoritme, de eig<strong>en</strong>schapp<strong>en</strong> ervan, <strong>en</strong> mogelijke<br />
acceleratiestructur<strong>en</strong> uit de doek<strong>en</strong> word<strong>en</strong> gedaan.<br />
De (<strong>GPU</strong>) ray tracer implem<strong>en</strong>tatie voor deze thesis is vrij sam<strong>en</strong>l<strong>op</strong><strong>en</strong>d<br />
met de (<strong>CPU</strong>) versie die voorgesteld wordt in het boek “Realistic <strong>Ray</strong> <strong>Tracing</strong>”<br />
van Peter Shirley [Shi00]. Hierin wordt stapsgewijs e<strong>en</strong> klassieke ray tracer<br />
gebouwd, met telk<strong>en</strong>s e<strong>en</strong> verantwoording waarom er voor bepaalde algoritm<strong>en</strong>,<br />
datastructur<strong>en</strong>, formules, e.a. ge<strong>op</strong>teerd werd. Dikwijls werd<strong>en</strong> bepaalde keuz<strong>en</strong><br />
gemaakt, puur voor de e<strong>en</strong>voud, t<strong>en</strong> koste van efficiëntie. E<strong>en</strong> voorbeeld hiervan<br />
is het gebruik van e<strong>en</strong> regular grid in plaats van bijvoorbeeld k-d tree. Dit was in<br />
vele gevall<strong>en</strong> welgekom<strong>en</strong> om de <strong>GPU</strong>-code beperkt te houd<strong>en</strong> qua complexheid<br />
<strong>en</strong> aantal instructies.<br />
In de doctoraatsthesis “Realtime <strong>Ray</strong> <strong>Tracing</strong> and Interactive Global Illumination”<br />
van Ingo Wald [Wal04] kom<strong>en</strong> allerlei techniek<strong>en</strong> <strong>en</strong> afweging<strong>en</strong> naar<br />
vor<strong>en</strong> om realtime ray tracing mogelijk te mak<strong>en</strong>. Bepaalde <strong>op</strong>timalisaties, zoals<br />
gebruik van SSE 2 , geheug<strong>en</strong>indeling <strong>en</strong> cache alignm<strong>en</strong>t zijn niet zonder meer<br />
over te nem<strong>en</strong> voor e<strong>en</strong> programma dat uitgevoerd wordt <strong>op</strong> de <strong>GPU</strong>.<br />
2.2.1 Algoritme<br />
Als we e<strong>en</strong> waarheidsgetrouw beeld w<strong>en</strong>s<strong>en</strong> te bepal<strong>en</strong> van e<strong>en</strong> gegev<strong>en</strong> virtuele<br />
scène, zoud<strong>en</strong> we als volgt te werk kunn<strong>en</strong> gaan. Eerst <strong>en</strong> vooral plaats<strong>en</strong><br />
we onze fictieve camera in de wereld. We iterer<strong>en</strong> over alle lichtbronn<strong>en</strong> <strong>en</strong><br />
per lichtbron schiet<strong>en</strong> we lichtdeeltjes (foton<strong>en</strong>) de wereld in. We volg<strong>en</strong> deze<br />
doorhe<strong>en</strong> de scène volg<strong>en</strong>s de wett<strong>en</strong> van de fysica, totdat all<strong>en</strong> geabsorbeerd<br />
zijn of zich niet meer in de beschouwde scène bevind<strong>en</strong>. Dieg<strong>en</strong>e die <strong>op</strong> de onze<br />
camera zijn terechtgekom<strong>en</strong> <strong>en</strong> door het brandpunt gaan (zie figuur 2.3), gev<strong>en</strong><br />
we weer <strong>op</strong> de corresponder<strong>en</strong>de plaats <strong>op</strong> ons beeldscherm.<br />
2 Streaming SIMD Ext<strong>en</strong>sions (Intel). Door hiervan gebruik te mak<strong>en</strong> is het mogelijk 4<br />
floats te verwerk<strong>en</strong> in slechts één klok cyclus. E<strong>en</strong> ray tracer kan hiervoor herschrev<strong>en</strong> word<strong>en</strong><br />
zodat 4 stral<strong>en</strong> tegelijkertijd word<strong>en</strong> verwerkt. [WBWS01]<br />
6