of 25 /25
Ray-tracing

# 1 Ray-tracing. 2 Overview n Recursive Ray Tracing n Shadow Feelers n Snell’s Law for Refraction n When to stop!

Embed Size (px)

### Text of 1 Ray-tracing. 2 Overview n Recursive Ray Tracing n Shadow Feelers n Snell’s Law for Refraction n...

1

Ray-tracing

2

Overview

Recursive Ray Tracing Shadow Feelers Snell’s Law for Refraction When to stop!

3

Recap: Light Transport

4

Recap: Local Illumination

Ambient, diffuse & specular components The sum is over the specular and diffuse

components for each light

M

j

m

jsjdjiar nhklnkIkI1 ,Ia

5

Recap: Result of Ray Casting

6

Correcting for Non-Visible Lights

EN H

L

surface

7

Where Sj is the result of intersecting the ray L with the scene objects

Note consider your intersection points along the ray L carefully• Hint – they might be beyond the light!

M

j

mjsjdjijaar nhklnkISIkI

1 ,

8

9

Recursive Ray-Tracing

We can simulate specular-specular transmission elegantly by recursing and casting secondary rays from the intersection points

We must obviously chose a termination depth to cope with multiple reflections

10

Introducing Reflection

Where

EN H

L

surface

R

NENER 2

11

Computing the reflection direction

Ideal reflection = • R same plane as V and N

R = aE + bN

• E.N = N.R = a(N.E)+b• If a = -1, b = 2N.E

R = -E + 2(N.E)N

N

R

E

12

Computing Reflectance

'rrlocalr IkII Where Ilocal is computed as before Ray r' is formed from intersection point

and the direction R and is cast into the scene as before

13

Recursive Ray Tracing

L1

L2

p

p’

p’’

R1R2

14

Pseudo Code

Color RayTrace(Point p, Vector direction, int depth) {

Point pd /* Intersection point */

Boolean intersection

if (depth > MAX) return Black

intersect(p,direction, &pd, &intersection)

if (!intersection) return Background

Ilocal = kaIa + Ip.v.(kd(n.l) + ks.(h.n)m)

return Ilocal + kr*RayTrace(pd, R, depth+1)

}

Normally kr = ks

15

Result of Recursion

16

Perfect Specular Transmission

N H

L

E

T

R

Snell’s Law

1

2

sin

sin

is index ofrefraction

1

17

Using Snell’s Law

Using this law it is possible to show that:

Note that if the root is negative then total internal reflection has occurred and you just reflect the vector as normal

211

2

sin

sin

1cos1cos 22121212 NET

18

Recursive Ray Tracing Including Transparent Objects

L1

L2

p

p’

p’’

R1R2

T2

T1

19

New Pseudo Code

Color RayTrace(Point p, Vector D, int depth) { Point pd /* Intersection point */ Boolean intersection if (depth > MAX) return Black intersect(p,direction, &pd, &intersection) if (!intersection) return Background

Ilocal = kaIa + Ip.v.(kd(n.l) + ks.(h.n)m)

return Ilocal + kr*RayTrace(pd, R, depth+1) + kt*RayTrace(pd, T, depth+1)

}

20

Direct Specular Transmission

A transparent surface can be illuminated from behind and this should be calculated in Ilocal

NH'

L

E

21

Calculating H'

Use H‘ instead of H in specular term

1'

1

2

1

2

LE

H

22

Putting Everything Together

23

Discussion – What Can’t We Simulate?

24

Remark

Specular and transmission only• What should be added to consider diffuse reflection?

Why it’s expensive• Intersection of rays with polygons (90%)

How to reduce the cost?• Reduce the number of rays• Reduce the cost on each ray

– First check with bounding box of the object– Methods to sort the scene and make it faster

25

Summary

Recursive ray tracing is a good simulation of specular reflections

We’ve seen how the ray-casting can be extended to include shadows, reflections and transparent surfaces

However this is a very slow process and still misses some types of effect!

Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Documents
Education
Documents
Documents
Documents
Documents