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.

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

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

Saved successfully!

Ooh no, something went wrong!