Ray Tracing Assignment Goal is to reproduce the following So You Want to Write a Ray Tracer Checkpoint 6 – Refraction Whitted, 1980 Ray Tracing Assignment Ray Tracing Assignment Seven checkpoints Seven checkpoints Setting the Scene Setting the Scene Camera Modeling Camera Modeling Basic Shading Basic Shading Procedural Shading Procedural Shading Recursive Ray Tracing – Reflection Recursive Ray Tracing – Reflection Recursive Ray Tracing – Transmission Recursive Ray Tracing – Transmission Tone Reproduction Tone Reproduction Refraction Recursive Ray Tracing color illuminate (ray, depth) Perform recursive ray tracing by find closest intersect considering reflection and refraction if (!intersection) return background color else Parameters to add: spawn shadow ray For each object retcolor = local illumination if (depth < MAX_DEPTH) k r , k t – reflection and transmission constants if (k r > 0) k t ≠ 0 for this checkpoint spawn reflection ray retcolor += k r * illuminate (reflect ray, depth+1) Index of refraction (example 0.95) if (k t > 0) spawn transmission ray retcolor += k t * illuminate (trans ray, depth +1) return retcolor 1
Total Internal Reflection Recursive Ray Tracing Calculating Transmission Ray For each pixel Starting with Snell’s law d n � i spawn ray from camera pos to pixel η sin θ = η sin θ � i i i t t pixel_color = illuminate (ray, 1) η t θ Assume d and n are normalized. t t We can find the equation for t, the transmission ray: d is the incoming ray, t is the 2 η ( d − n(d • n) ) η ( 1 − ( d • n ) 2 ) transmission ray. i i t = + n 1 - 2 η η t t If negative – total internal reflection Total Internal Reflection an optical phenomenon that occurs when light is refracted (bent) at a medium boundary enough to send it backwards, effectively reflecting all of the light. In these cases, the transmission ray will be spawned in the reflection direction. Wikipedia Total Internal Reflection Calculating transmission ray Snell’s law applet http://www.physics.northwestern.edu/ugrad/vpl/opt ics/snell.html Index of refraction of air = 1.0 Optimization If indices of refractions are the same Total internal reflection occurs around boundary of no bending Transmission direction is the same as incoming direction transparent sphere 2
Things to think about Things to think about Must keep track if you are inside or 2 ways to deal outside If n • d < 0 then Inside Index of refraction Use –n as normal for calculations η Use inside η as � i Normal vector Keep track as you are spawning rays Things to think about Refraction public Vector3f faceForward (Vector3f A Vector3f B) For sake of checkpoint { Make one sphere transparent (k t = 0.8) // For acute angles, dot product will Make other sphere non-transparent // be positive if (A.dot(B) >= 0) return A; May wish to test first with index of refraction = 1.0 // Obtuse angle, reverse the first vector Vector3f V = new Vector3f (A); V.scale (-1.0f); return V; } Refraction Refraction Note: Due date: If done correctly, you should now have a faithful Must be posted to Web site by May 2nd reproduction of the target image. Recall: Sample parameters 10% penalty per day Sphere1 – front Sphere2 – rear Having trouble? Color (amb/diffuse) Color (all) = white (0.7, 0.7, 0.7) Ka = 0 .0 7 5 Let me know EARLY. Color (spec) = white Kd = 0 .0 7 5 Ka = 0 .1 5 Questions? Ks = 0 .2 Kd = 0 .2 5 Ke = 2 0 .0 Ks = 1 .0 Kr = 0 .0 1 Ke = 2 0 .0 Kt = 0 .8 5 Kr = 0 .7 5 Kt = 0 .0 3
Extra extra For 5 points: Adjust shadow ray based upon transparency of objects. 4
Recommend
More recommend