59
MIT EECS 6.837, Cutler and Durand 1 MIT 6.837 - Ray Tracing

MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

Embed Size (px)

Citation preview

Page 1: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 1

MIT 6.837 - Ray Tracing

Page 2: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 2

Ray Tracing

MIT EECS 6.837Frédo Durand and Barb Cutler

Some slides courtesy of Leonard McMillan

Courtesy of James Arvo and David Kirk. Used with permission.

Page 3: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 3

Administrative• Assignment 2

– Due tomorrow at 11:59pm• Assignment 3

– Online this evening– Due Wednesday October 1

Page 4: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 4

Review of last week?

Page 5: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 5

Review of last week• Linear, affine and

projective transforms

• Homogeneous coordinates

• Matrix notation• Transformation composition

is not commutative• Orthonormal basis change

Page 6: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 6

Review of last week• Transformation for ray tracing

– Transforming the ray• For the direction,

linear part of the transform only– Transforming t or not– Normal transformation

• Constructive Solid Geometry (CSG)

nWS

nWST = nOS (M-1) vWS

Page 7: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 7

Fun with transformations: Relativity• Special relativity: Lorentz transformation

– 4 vector (t, x, y, z)• 4th coordinate can be ct or t

– Lorentz transformation depends on object speed v

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

⎛−

=

⎟⎟⎟⎟⎟

⎜⎜⎜⎜⎜

zyxt

vv

zyxt

100001000000

''''

γγγγ

http://casa.colorado.edu/~ajsh/sr/sr.shtml

Digressio

n

Page 8: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 8

Relativity• Transform ray by Lorentz transformation

0.65c 0.70c

0.90c 0.99c

See also http://www.cs.mu.oz.au/~andrbh/raytrace/raytrace.html

Digressio

n

Page 9: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 9

Today: Ray Tracing

Image removed due to copyright considerations.

Page 10: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 10

Overview of today• Shadows

• Reflection

• Refraction

• Recursive Ray Tracing

Page 11: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

11

Ray Casting (a.k.a. Ray Shooting)For every pixel (x,y)

Construct a ray from the eye color[x,y]=castRay(ray)

• Complexity?– O(n * m)– n: number of objects, m: number of pixels

Page 12: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 12

Ray Casting with diffuse shadingColor castRay(ray)

Hit hit();

For every object obob->intersect(ray, hit, tmin);

Color col=ambient*hit->getColor();

For every light Lcol=col+hit->getColorL()*L->getColor*L->getDir()->Dot3( hit->getNormal() );

Return col;

Page 13: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 13

Encapsulating shadingColor castRay(ray)

Hit hit();

For every object obob->intersect(ray, hit, tmin);

Color col=ambient*hit->getMaterial()->getDiffuse();For every light L

col=col+hit->getMaterial()->shade(ray, hit, L->getDir(), L->getColor());

Return col;

Page 14: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 14

How can we add shadows?Color castRay(ray)

Hit hit();

For every object obob->intersect(ray, hit, tmin);

Color col=ambient*hit->getMaterial()->getDiffuse();

For every light Lcol=col+hit->getMaterial()->shade (ray, hit, L->getDir(), L->getColor());

Return col;

Page 15: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 15

ShadowsColor castRay(ray)

Hit hit();For every object ob

ob->intersect(ray, hit, tmin); Color col=ambient*hit->getMaterial()->getDiffuse();

For every light LRay ray2(hitPoint, L->getDir()); Hit hit2(L->getDist(),,)For every object ob

ob->intersect(ray2, hit2, 0);If (hit->getT> L->getDist())

col=col+hit->getMaterial()->shade (ray, hit, L->getDir(), L->getColor());

Return col;

Page 16: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 16

Shadows – problem?Color castRay(ray)

Hit hit();For every object ob

ob->intersect(ray, hit, tmin); Color col=ambient*hit->getMaterial()->getDiffuse();

For every light LRay ray2(hitPoint, L->getDir()); Hit hit2(L->getDist(),,)For every object ob

ob->intersect(ray2, hit2, 0);If (hit->getT> L->getDist())

col=col+hit->getMaterial()->shade (ray, hit, L->getDir(), L->getColor());

Return col;

Page 17: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 17

Avoiding self shadowingColor castRay(ray)

Hit hit();For every object ob

ob->intersect(ray, hit, tmin); Color col=ambient*hit->getMaterial()->getDiffuse();

For every light LRay ray2(hitPoint, L->getDir()); Hit hit2(L->getDist(),,)For every object ob

ob->intersect(ray2, hit2, epsilon);If (hit->getT> L->getDist())

col=col+hit->getMaterial()->shade (ray, hit, L->getDir(), L->getColor());

Return col;

Page 18: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 18

Shadow optimization• Shadow rays are special• How can we accelerate our code?

Page 19: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 19

Shadow optimization• We only want to know whether there is an

intersection, not which one is closest• Special routine Object3D::intersectShadowRay()

– Stops at first intersection

Page 20: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 20

Shadow ray casting history• Due to Appel [1968]• First shadow method in graphics• Not really used until the 80s

Page 21: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 21

Questions?

Image removed due to copyright considerations.

Page 22: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 22

Overview of today• Shadows

• Reflection

• Refraction

• Recursive Ray Tracing

Page 23: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 23

Mirror Reflection• Compute mirror contribution• Cast ray

– In direction symmetric wrt normal• Multiply by reflection coefficient (color)

Page 24: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 24

Mirror Reflection• Cast ray

– In direction symmetric wrt normal• Don’t forget to add epsilon

to the ray Without epsilon

With epsilon

Page 25: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 25

Reflection• Reflection angle = view angle

R

θVθR

V

N

Page 26: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 26

Reflection• Reflection angle = view angle

( )NNVVR •−= 2

R

θVθR

V

N

V N N

V N N

V

Page 27: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 27

Amount of Reflection• Traditional (hacky) ray

tracing– Constant coefficient reflectionColor

– Component per component multiplication

R

θVθR

V

N

Page 28: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 28

Amount of Reflection

R

θVθR

V

N• More realistic:– Fresnel reflection term– More reflection at grazing angle– Schlick’s approximation:

R(θ)=R0+(1-R0)(1-cos θ)5

00

0.10.20.30.40.50.60.70.80.9

1

10 20 4030 50 60 70 80 90 00

0.10.20.30.40.50.60.70.80.9

1

10 20 4030 50 60 70 80 90

S Polarization

METAL DIELECTRIC (GLASS)

P Polarization Unpolarized

Ref

lect

ance

Ref

lect

ance

Angle from Normal Angle from Normal

Page 29: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 29

Fresnel reflectance demo• Lafortune et al., Siggraph 1997

Image removed due to copyright considerations.

Page 30: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 30

Overview of today• Shadows

• Reflection

• Refraction

• Recursive Ray Tracing

Page 31: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 31

Transparency• Compute transmitted contribution• Cast ray

– In refracted direction• Multiply by transparency coefficient (color)

Page 32: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 32

Qualitative refraction• From “Color and Light in Nature” by

Lynch and Livingston

Page 33: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 33

RefractionN

N−

M

T

Iiθ

IN iˆcosˆ −θ

iN θcosˆ

Note that I is the negative of the incoming ray

Snell-Descartes Law

Page 34: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 34

Refraction

ri

t

t

i ηηη

θθ

==sinsin N

N−

M

T

Iiθ

IN iˆcosˆ −θ

iN θcosˆ

Note that I is the negative of the incoming ray

Snell-Descartes Law

Page 35: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 35

Refraction

Snell-Descartes Law

NMT ttˆcosˆsinˆ θθ −=

i

i INM

θθ

sin)ˆcosˆ(ˆ −

=

N

N−

M

T

Iiθ

IN iˆcosˆ −θ

iN θcosˆ

Note that I is the negative of the incoming ray

ri

t

t

i ηηη

θθ

==sinsin

Page 36: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 36

Refraction

Snell-Descartes Law

NMT ttˆcosˆsinˆ θθ −=

i

i INM

θθ

sin)ˆcosˆ(ˆ −

=

NINT tii

t ˆcos)ˆcosˆ(sinsinˆ θθ

θθ

−−=

INT rtirˆˆ)coscos(ˆ ηθθη −−=

N

N−

M

T

Iiθ

IN iˆcosˆ −θ

iN θcosˆ

Note that I is the negative of the incoming ray

ri

i

t

ηη

θθ

==sinsin

Page 37: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 37

Refraction

Snell-Descartes Law

NMT ttˆcosˆsinˆ θθ −=

i

i INM

θθ

sin)ˆcosˆ(ˆ −

=

NINT tii

t ˆcos)ˆcosˆ(sinsinˆ θθ

θθ

−−=

INT rtirˆˆ)coscos(ˆ ηθθη −−=

N

N−

M

T

Iiθ

IN iˆcosˆ −θ

iN θcosˆ

Note that I is the negative of the incoming ray

))ˆˆ(1(1sin1sin1cos

ˆˆcos22222 IN

IN

rirtt

i

⋅−−=−=−=

⋅=

ηθηθθ

θ

ri

t

t

i ηηη

θθ

==sinsin

Page 38: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 38

Refraction

Snell-Descartes Law

NMT ttˆcosˆsinˆ θθ −=

i

i INM

θθ

sin)ˆcosˆ(ˆ −

=

NINT tii

t ˆcos)ˆcosˆ(sinsinˆ θθ

θθ

−−=

INT rtirˆˆ)coscos(ˆ ηθθη −−=

))ˆˆ(1(1sin1sin1cos

ˆˆcos22222 IN

IN

rirtt

i

⋅−−=−=−=

⋅=

ηθηθθ

θ

INININT rrrˆˆ))ˆˆ(1(1)ˆˆ(ˆ 22 ηηη −⎟

⎠⎞⎜

⎝⎛ ⋅−−−⋅=

N

N−

M

T

Iiθ

IN iˆcosˆ −θ

iN θcosˆ

Total internal reflection when the square root is imaginary

Note that I is the negative of the incoming ray

rt

i

i

t ηηη

θθ

==sinsin

Don’t forget to normalize

Page 39: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 39

Total internal reflection• From “Color and Light in Nature” by

Lynch and Livingstone

97.2o

THE OPTICAL MANHOLE. LIGHT FROM THE HORIZON (ANGLE OF INCIDENCE = 90O)IS REFRACTED DOWNWARD AT AN ANGLE OF 48.6O. THIS COMPRESSES THE SKY

INTO A CIRCLE WITH A DIAMETER OF 97.2O INSTEAD OF ITS USUAL 180O.

O

Lynch, David K. and William Livingston. Color and Light in Nature. Cambridge University Press. June 2001. ISBN: 0-521-77504-3.

Image adapted from:

Page 40: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 40

Cool refraction demo• Enright, D., Marschner, S. and Fedkiw, R.,

Image removed due to copyright considerations.

Page 41: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 41

Cool refraction demo• Enright, D., Marschner, S. and Fedkiw, R.,

Image removed due to copyright considerations.

Page 42: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 42

Refraction and the lifeguard problem• Running is faster than swimming

Beach

Person in trouble

Lifeguard

Water

Run

Swim Digressio

n

Page 43: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 43

Wavelength• Refraction is wavelength-dependent• Newton’s experiment• Usually ignored in graphics

Page 44: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 44

Rainbow• Refraction depends on wavelength• Rainbow is caused by

refraction+internal reflection+refraction• Maximum for angle around 42 degrees

Digressio

n

Image removed due to copyright considerations.

Page 45: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 45

Overview of today• Shadows

• Reflection

• Refraction

• Recursive Ray Tracing

Page 46: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 46

Recap: Ray TracingtraceRay

Intersect all objectsAmbient shadingFor every light

Shadow rayshading

If mirrorTrace reflected ray

If transparentTrace transmitted ray

Page 47: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 47

Recap: Ray TracingColor traceRay(ray)

For every object obob->intersect(ray, hit, tmin);

Color col=ambient*hit->getMaterial()->getDiffuse();For every light L

If ( not castShadowRay( hit->getPoint(), L->getDir())col=col+hit->getMaterial()->shade(ray, hit, L->getDir(), L->getColor());

If (hit->getMaterial()->isMirror())Ray rayMirror (hit->getPoint(), getMirrorDir(ray->getDirection(), hit->getNormal());

Col=col+hit->getMaterial->getMirrorColor()*traceRay(rayMirror, hit2);

If (hit->getMaterial()->isTransparent()Ray rayTransmitted(hit->getPoint(), getRefracDir(ray, hit->getNormal(), curentRefractionIndex, hit->Material->getRefractionIndex());

Col=col+hit->getMaterial->getTransmittedColor()*traceRay(rayTransmitted, hit3);

Return col;

Page 48: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 48

Does it end?Color traceRay(ray)

For every object obob->intersect(ray, hit, tmin);

Color col=ambient*hit->getMaterial()->getDiffuse();For every light L

If ( not castShadowRay( hit->getPoint(), L->getDir())col=col+hit->getMaterial()->shade(ray, hit, L->getDir(), L->getColor());

If (hit->getMaterial()->isMirror())Ray rayMirror (hit->getPoint(), getMirrorDir(ray->getDirection(), hit->getNormal());

Col=col+hit->getMaterial->getMirrorColor()*traceRay(rayMirror, hit2);

If (hit->getMaterial()->isTransparent()Ray rayTransmitted(hit->getPoint(), getRefracDir(ray, hit->getNormal(), curentRefractionIndex, hit->Material->getRefractionIndex());

Col=col+hit->getMaterial->getTransmittedColor()*traceRay(rayTransmitted, hit3);

Return col;

Page 49: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 49

Avoiding infinite recursionStopping criteria:• Recursion depth

– Stop after a number of bounces

• Ray contribution– Stop if

transparency/transmitted attenuation becomes too small

Usually do both

Color traceRay(ray)For every object ob

ob->intersect(ray, hit, tmin); Color col=ambient*hit->getMaterial()->getDiffuse();For every light L

If ( not castShadowRay( hit->getPoint(), L->getDir())col=col+hit->getMaterial()->shade

(ray, hit, L->getDir(), L->getColor());If (hit->getMaterial()->isMirror())

Ray rayMirror (hit->getPoint(), getMirrorDir(ray->getDirection(), hit->getNormal());

Col=col+hit->getMaterial->getMirrorColor()*traceRay(rayMirror);

If (hit->getMaterial()->isTransparent()Ray rayTransmitted(hit->getPoint(),

getRefracDir(ray, hit->getNormal(), curentRefractionIndex, hit->Material->getRefractionIndex());

Col=col+hit->getMaterial->getTransmittedColor()*traceRay(rayTransmitted);

Return col;

Page 50: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 50

Recursion for reflection

1 recursion0 recursion 2 recursions

(Images removed due to copyright considerations.)

Page 51: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 51

The Ray Tree

R2

R3

L2

L1

L3

N3

T1

T3 Eye

L1

T3R3

L3L2

T1R1

R2

N2

R1

N1

Ni surface normal

Ri reflected ray

Li shadow ray

Ti transmitted (refracted) ray

Eye

Page 52: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 52

Ray Tracing History• Ray Casting: Appel, 1968• CSG and quadrics: Goldstein &

Nagel 1971• Recursive ray tracing: Whitted,

1980

ABC

D E

Image adapted from:Appel, A. “Some Techniques for Shading Machine Renderings of Solids.” Proceedings of the Spring Joint Computer Conference. 1968, pp. 37-45.

Image plane

Image removed due to copyright considerations.

Page 53: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 53

Does Ray Tracing simulate physics?• Photons go from the light to the eye, not the

other way• What we do is backward ray tracing

Page 54: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 54

Forward ray tracing• Start from the light source• But low probability to reach the eye

– What can we do about it?

Page 55: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 55

Forward ray tracing• Start from the light source• But low probability to reach the eye

– What can we do about it?– Always send a ray to the eye

• Still not efficient

Page 56: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 56

Does Ray Tracing simulate physics?• Ray Tracing is full of dirty tricks • e.g. shadows of transparent objects

– Dirtiest: opaque– Still dirty: multiply by transparency color

• But then no refraction

Page 57: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 57

Correct transparent shadow

Digressio

nAnimation by Henrik Wann Jensen

Using advanced refraction technique (refraction for illumination is usually not handled that well)

(Image removed due to copyright considerations.)

Page 58: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 58

The Rendering equation• Clean mathematical framework for light-

transport simulation• We’ll see that in November• At each point, outgoing light in one direction

is the integral of incoming light in all directionsmultiplied by reflectance property

Page 59: MIT 6.837 - Ray Tracing · PDF fileMIT EECS 6.837, Cutler and Durand 2 Ray Tracing MIT EECS 6.837 Frédo Durand and Barb Cutler Some slides courtesy of Leonard McMillan Courtesy of

MIT EECS 6.837, Cutler and Durand 59

Thursday• Reflectance properties,

shading and BRDF• Guest lecture

ρ

φ

θθ

r

r n( (

i

i

r

φr

φi

φi, , ,θ θ