1 / 61

CS 551 / 645: Introductory Computer Graphics

CS 551 / 645: Introductory Computer Graphics. Ray Tracing. Administrivia. Assignment 5: Intel okay. Realism. What is not realistic about the following images?. Realism?. Realism?. Realism?. Realism?. Realism?. Crude light-surface interaction model. Strictly local illumination model.

maxine
Download Presentation

CS 551 / 645: Introductory Computer Graphics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS 551 / 645: Introductory Computer Graphics Ray Tracing David Luebke 7/30/2014

  2. Administrivia • Assignment 5: Intel okay David Luebke 7/30/2014

  3. Realism • What is not realistic about the following images? David Luebke 7/30/2014

  4. Realism? David Luebke 7/30/2014

  5. Realism? David Luebke 7/30/2014

  6. Realism? David Luebke 7/30/2014

  7. Realism? David Luebke 7/30/2014

  8. Realism? David Luebke 7/30/2014

  9. Crude light-surface interaction model Strictly local illumination model Realism… • A big part of realism is realistic lighting • Is Phong’s lighting model realistic? • Empirical specular term • “Ambient” term • No shadows • No surface interreflection David Luebke 7/30/2014

  10. Global Illumination • Realistic lighting is global, not local • Surfaces shadow each other • Surfaces illuminate each other • Two long-time approaches • Ray-tracing: simulate light-ray optics • Radiosity: simulate physics of light transfer David Luebke 7/30/2014

  11. Ray Tracing Overview • To determine visible surfaces at each pixel: • Cast a ray from the eyepoint through the center of the pixel • Intersect the ray with all objects in the scene • Whatever it hits first is the visible object • This is called ray casting David Luebke 7/30/2014

  12. Ray Casting • An example: Eyepoint Screen Scene David Luebke 7/30/2014

  13. Recursive Ray Tracing • Obvious extension: • Spawn additional rays off reflective surfaces • Spawn transmitted rays through transparent surfaces • Leads to recursive ray tracing Secondary Rays Primary Ray David Luebke 7/30/2014

  14. Recursive Ray Tracing • Slightly less obvious extension: • Trace a ray from point of intersection to light source • If ray hits anything before light source, object is in shadow • These are called shadow rays David Luebke 7/30/2014

  15. Ray Tracing Overview • Ray tracing is simple • No clipping, perspective projection matrices, scan conversion of polygons • Ray tracing is powerful • Hidden surface problem • Shadow computation • Reflection/refraction • Ray tracing is slow • Complexity proportional to # of pixels • Typical screen ~ 1,000,000 pixels • Typical scene « 1,000,000 polygons David Luebke 7/30/2014

  16. Recursive Ray Tracing David Luebke 7/30/2014

  17. Recursive Ray Tracing Pixel ImagePlane David Luebke 7/30/2014

  18. Recursive Ray Tracing “Direct” Ray To Eye David Luebke 7/30/2014

  19. Recursive Ray Tracing “Indirect” Ray To Eye David Luebke 7/30/2014

  20. Recursive Ray Tracing • Physically, we’re interested in path of light rays from light source to eye. • In practice, we trace rays backwards from eye to source (Why?) David Luebke 7/30/2014

  21. Recursive Ray Tracing • Physically, we’re interested in path of light rays from light source to eye. • In practice, we trace rays backwards from eye to source (Why?) • Computational efficiency: we want the finite subset of rays that leave source, bounce around, and pass through eye • Can’t predict where a ray will go, so start with rays we know reach eye David Luebke 7/30/2014

  22. Basic Algorithm • Function TraceRay()Recursively trace ray Rand return resulting color C • ifRintersects any objects then • Find nearest object O • Find local color contribution • Spawn reflected and transmitted rays, using TraceRay() to find resulting colors • Combine colors; return result • else • return background color David Luebke 7/30/2014

  23. Basic Algorithm: Code Object allObs[]; Color image[]; RayTraceScene() allObs = initObjects(); for (Yall rows in image) for (X all pixels in row) Ray R = calcPrimaryRay(X,Y); image[X,Y] = TraceRay(R);display(image); David Luebke 7/30/2014

  24. Basic Algorithm: Code Color TraceRay(Ray R) ifrayHitsObjects(R) then Color localC, reflectC, refractC; Object O = findNearestObject(R); localC = shade(O,R); Ray reflectedRay = calcReflect(O,R) Ray refractedRay = calcRefract(O,R) reflectC = TraceRay(reflectedRay); refractC = TraceRay(refractedRay); return localC  reflectC refractC else returnbackgroundColor David Luebke 7/30/2014

  25. Refining theBasic Algorithm Color TraceRay(Ray R) ifrayHitsObjects(R) then Color localC, reflectC, refractC; Object O = findNearestObject(R); localC = shade(O,R); Ray reflectedRay = calcReflect(O,R) Ray refractedRay = calcRefract(O,R) reflectC = TraceRay(reflectedRay); refractC = TraceRay(refractedRay); return localC  reflectC refractC else returnbackgroundColor David Luebke 7/30/2014

  26. Ray-Object Intersection • Given a ray and a list of objects, what objects (if any) intersect the ray? • Query: Does ray R intersect object O? • How to represent ray? • What kind of object? • Sphere • Polygon • Box • General quadric David Luebke 7/30/2014

  27. Representing Rays • How might we represent rays? • We represent a ray parametrically: • A starting point O • A direction vector D • A scalar t R = O+ tD O t < 0 t = 1 t > 1 D David Luebke 7/30/2014

  28. Ray-Sphere Intersection • Ray R = O + tD x = Ox + t Dx y = Oy + t Dy z = Oz + t Dz • Sphere at (l, m, n) of radius r is: (x - l)2 + (y - m)2 + (z - n)2 = r 2 • Substitute for x,y,z and solve for t… David Luebke 7/30/2014

  29. Ray-Sphere Intersection • Works out as a quadratic equation: at2 + bt + c = 0 where a = Dx2 + Dy2 + Dz2 b =2Dx(Ox - l) + 2Dy(Oy - m) + 2Dz(Oz - n) c = l2 + m2 + n2 + Ox2 + Oy2 + Oz2 - 2(l Ox + m Oy + n Oz + r2) David Luebke 7/30/2014

  30. Ray-Sphere Intersection • If solving for t gives no real roots: ray does not intersect sphere • If solving gives 1 real root r, ray grazes sphere where t = r • If solving gives 2 real roots (r1, r2), ray intersects sphere at t = r1& t = r2 • Ignore negative values • Smallest value is first intersection David Luebke 7/30/2014

  31. Ray-Sphere Intersection • Find intersection point Pi = (xi, yi, zi) by plugging t back into ray equation • Find normal at intersection point by subtracting sphere center from Pi and normalizing: • When will we need the normal? When not? David Luebke 7/30/2014

  32. Ray-Polygon Intersection • Polygons are the most common model representation • Can render in hardware • Lowest common denominator • Basic approach: • Find plane equation of polygon • Find point of intersection between ray and plane • Does polygon contain intersection point? David Luebke 7/30/2014

  33. d Ray-Polygon Intersection • Find plane equation of polygon:ax + by + cz + d = 0 • Remember how? N = [a, b, c] d = N  P1 y N P2 P1 x David Luebke 7/30/2014

  34. Ray-Polygon Intersection • Find intersection of ray and plane: t = -(aOx + bOy + cOz + d) / (aDx + bDy + cDz) • Does polygon contain intersection point Pi ? • One simple algorithm: • Draw line from Pi to each polygon vertex • Measure angles between lines (how?) • If sum of angles between lines is 360°, polygon contains Pi • Slow — better algorithms available David Luebke 7/30/2014

  35. Ray-Box Intersection • Often want to find whether a ray hits an axis-aligned box (Why?) • One way: • Intersect ray with pairs of parallel planes that form box • If intervals of intersection overlap, the ray intersects the volume. David Luebke 7/30/2014

  36. Shadow Rays • Simple idea: • Where a ray intersects a surface, send a shadow ray to each light source • If the shadow ray hits any surface before the light source, ignore light • Q: how much extra work is involved? • A: each ray-surface intersection now spawns n + 2 rays, n = # light sources • Remember: intersections 95% of work David Luebke 7/30/2014

  37. Shadow Rays • Some problems with using shadow rays as described: • Lots of computation • Infinitely sharp shadows • No semitransparent object shadows David Luebke 7/30/2014

  38. Shadow Rays • Some problems with using shadow rays as described: • Lots of computation • Infinitely sharp shadows • No semitransparent object shadows David Luebke 7/30/2014

  39. Light Buffer Shadow Ray Problems:Too Much Computation • Light buffer (Haines/Greenberg, 86) • Precompute lists of polygons surrounding light source in all directions • Sort each list by distance to light source • Now shadow ray need only be intersected with appropriate list! ShadowRay Occluding Polys Current Intersection Point David Luebke 7/30/2014

  40. Shadow Rays • Some problems with using shadow rays as described: • Lots of computation • Infinitely sharp shadows • No semitransparent object shadows David Luebke 7/30/2014

  41. Shadow Ray Problems:Sharp Shadows • Why are the shadows sharp? • A: Infinitely small point light sources • What can we do about it? • A: Implement area light sources • How? David Luebke 7/30/2014

  42. Shadow Ray Problems: Area Light Sources • Could trace a conical beam from point of intersection to light source: • Track portion of beam blocked by occluding polygons: 30% blockage David Luebke 7/30/2014

  43. Shadow Ray Problems:Area Light Sources • Too hard! Approximate instead: • Sample the light source over its area and take weighted average: 50% blockage David Luebke 7/30/2014

  44. Shadow Ray Problems:Area Light Sources • Disadvantages: • Less accurate (50% vs. 30% blockage) • Oops! Just quadrupled (at least) number of shadow rays • Moral of the story: • Soft shadows are very expensive in ray tracing David Luebke 7/30/2014

  45. Shadow Rays • Some problems with using shadow rays as described: • Lots of computation • Infinitely sharp shadows • No semitransparent object shadows David Luebke 7/30/2014

  46. Shadow Ray Problems:Semitransparent Objects • In principle: • Translucent colored objects should cast colored shadows • Translucent curved objects should create refractive caustics • In practice: • Can fake colored shadows by attenuating color with distance • Caustics need backward ray tracing David Luebke 7/30/2014

  47. Speedup Techniques • Intersect rays faster • Shoot fewer rays • Shoot “smarter” rays David Luebke 7/30/2014

  48. Speedup Techniques • Intersect rays faster • Shoot fewer rays • Shoot “smarter” rays David Luebke 7/30/2014

  49. Intersect Rays Faster • Bounding volumes • Spatial partitions • Reordering ray intersection tests • Optimizing intersection tests David Luebke 7/30/2014

  50. Bounding Volumes • Bounding volumes • Idea: before intersecting a ray with a collection of objects, test it against one simple object that bounds the collection 7 7 5 5 3 3 1 1 8 8 6 6 0 0 9 9 2 2 4 4 David Luebke 7/30/2014

More Related