Download
ray tracing n.
Skip this Video
Loading SlideShow in 5 Seconds..
Ray-tracing PowerPoint Presentation
Download Presentation
Ray-tracing

Ray-tracing

10 Vues Download Presentation
Télécharger la présentation

Ray-tracing

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Ray-tracing

  2. Overview • Recursive Ray Tracing • Shadow Feelers • Snell’s Law for Refraction • When to stop!

  3. Recap: Light Transport

  4. ( ) m ( å ( ) ) M = + I k I k n l k h n + × × , r a i j d j s j = 1 j Recap: Local Illumination • Ambient, diffuse & specular components • The sum is over the specular and diffuse components for each light I a

  5. Recap: Result of Ray Casting

  6. Correcting for Non-Visible Lights N H E 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!

  8. Result of Shadow Feeler

  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 N H R • Where E L surface

  11. Computing the reflection direction N E • 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 R  

  12. Computing Reflectance • 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. p’’ L2 R2 R1 p p’ L1 Recursive Ray Tracing

  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 E R Snell’s Law L  1 is index of refraction 2 T ß

  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

  18. T2 p’’ L2 R2 R1 p p’ T1 L1 Recursive Ray Tracing Including Transparent Objects

  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 N • A transparent surface can be illuminated from behind and this should be calculated in Ilocal H' E L

  21. Calculating H' • Use H‘ instead of H in specular term

  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!