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.
e<br />
v_up<br />
g<br />
s<br />
(0, 0)<br />
(i, j)<br />
s_x<br />
(n_x, n_y)<br />
Figuur 2.5: Parameters gebruikt voor het g<strong>en</strong>erer<strong>en</strong> van de primaire stral<strong>en</strong>.<br />
E<strong>en</strong> concreet voorbeeld dat gegev<strong>en</strong> wordt, is de intersectie van e<strong>en</strong> straal<br />
met e<strong>en</strong> bol. Dit is e<strong>en</strong> typisch voorbeeld vanwege de e<strong>en</strong>voudige wiskundige<br />
<strong>op</strong>lossing <strong>en</strong> de mooie resultat<strong>en</strong>. Beschouw e<strong>en</strong> bol met c<strong>en</strong>trum c <strong>en</strong> straal R,<br />
dan geldt:<br />
(p − c) · (p − c) − R 2 = 0<br />
voor alle punt<strong>en</strong> p die zich <strong>op</strong> de bol bevind<strong>en</strong>. E<strong>en</strong> straal met oorsprong o <strong>en</strong><br />
richting d kunn<strong>en</strong> we beschrijv<strong>en</strong> als e<strong>en</strong> rechte, met volg<strong>en</strong>de vergelijking:<br />
p(t) = o + td<br />
We zoek<strong>en</strong> nu de kleinst mogelijk t zodanig dat (p(t) − c) · (p(t) − c) − R2 = 0.<br />
Met e<strong>en</strong> minimum aan rek<strong>en</strong>werk kom<strong>en</strong> we aan:<br />
<br />
−d · (o − c) ± (d · (o − c))<br />
t = 2 − (d · d) ((o − c) · (o − c) − R2 )<br />
d · d<br />
Indi<strong>en</strong> de discriminant (onder de vierkanstwortel) negatief is, is er ge<strong>en</strong> intersectie<br />
met dit object. Anders wordt de kleinste positieve t g<strong>en</strong>om<strong>en</strong> aangezi<strong>en</strong><br />
dit de eerste (dus dichtstbijzijnde) intersectie is met de bol. Indi<strong>en</strong> deze waarde<br />
niet bestaat, is er ge<strong>en</strong> sprake van e<strong>en</strong> intersectie. De normaal n is ook triviaal<br />
te bepal<strong>en</strong>, namelijk n = (p − c)/R.<br />
Het intersecter<strong>en</strong> van vlakk<strong>en</strong> of axis aligned boxes is min of meer van<br />
dezelfde complexiteit. Zie voor meer info [Shi00]. Driehoek<strong>en</strong> daar<strong>en</strong>teg<strong>en</strong> zijn<br />
al iets geavanceerder om <strong>op</strong> effeciënte wijze af te handel<strong>en</strong>. E<strong>en</strong> veel gebruikt<br />
algoritme hiervoor is Moller-Trumbore [MT97], wat in detail behandeld wordt<br />
in hoofdstuk 5.2. Verder zie [Wal04].<br />
Reflectie<br />
Bij het ray trac<strong>en</strong> van e<strong>en</strong> reflecter<strong>en</strong>d <strong>op</strong>pervlak is de kleur niet <strong>en</strong>kel afhankelijk<br />
van het materiaal van het geïntersecteerde object, maar ook van object<strong>en</strong><br />
10<br />
s_y