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.

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

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

Saved successfully!

Ooh no, something went wrong!