200 likes | 372 Views
Computer Graphics (Fall 2003). COMS 4160, Lecture 17: Ray Tracing Ravi Ramamoorthi. http://www.cs.columbia.edu/~cs4160. The Internet Ray Tracing Competition: http://www.irtc.org. Image courtesy Paul Heckbert 1983. Effects needed for Realism. Shadows
E N D
Computer Graphics (Fall 2003) COMS 4160, Lecture 17: Ray Tracing Ravi Ramamoorthi http://www.cs.columbia.edu/~cs4160 The Internet Ray Tracing Competition: http://www.irtc.org
Effects needed for Realism • Shadows • Reflections (Mirrors) • Transparency • Interreflections • Detail (Textures etc.) • Complex Illumination • Realistic Materials • And many more
Ray Tracing: History • Appel 68 • Whitted 80 [recursive ray tracing] (picture) • Landmark in computer graphics • Lots of work on various geometric primitives • Lots of work on accelerations • Current Research • Real-Time raytracing (historically, slow technique) • Ray tracing architecture
The Pinhole Camera Image plane Pinhole Illustration courtesy Greg Humphries
Ray Tracing • Shoot rays through pixels into the world • For each pixel, • Find closest intersection in scene • Evaluate illumination model to color pixel
Comparison to Scan-Line • Per-pixel evaluation, per-pixel rays (not scan-convert each object). On face of it, costly • More complex shading, lighting effects possible
Ray paths • LR*E • Arbitrary paths: realism • Trace from light or eye? • Most light rays don’t hit eye • Importance sampling • Eye Ray tracing • Primary Rays • Shadow Rays • Reflected/Transmitted Rays Appel 68
Recursive Ray Tracing For each pixel • Trace Primary Ray, find intersection • Trace Shadow Ray(s) to light(s) • Color = Visible ? Illumination Model : 0 ; • Trace Reflected Ray • Color += reflectivity * Color of reflected ray
B A S P Shadow Rays • How much light is reaching point P? • Fire a shadowray towards each light in the scene • Numerical problems?
Problems with Recursion • Reflection rays may be traced forever • Generally, set maximum recursion depth • Same for transmitted rays (take refraction into account)
Ray/Object Intersections • Heart of Ray Tracer • One of the main initial research areas • Optimized routines for wide variety of primitives • Various types of info • Shadow rays: Intersection/No Intersection • Primary rays: Point of intersection, material, normals • Texture coordinates • Work out examples • Triangle, sphere, general implicit surface
More on Intersections • Basic Algorithm • Test each object for intersection • Sort objects to find closest one • Trace shadow ray. If unblocked, compute illumination • Issues • Precision: self shadowing • Aliasing, Supersampling • Stochastic, Jittered sampling
Precision • Floating point calculations are imprecise! • Often, a ray’s origin is supposed to be on a surface, but this might happen: • Typical hack is to only allow t values above some small threshold, like .0000001
Comparisons • Scan Conversion vs. Ray tracing • Ray tracing is (has been) much much slower • Is this still true if number of objects large? Fractals? • Acceleration structures (next), but still very slow usually • Realism in imagery • Reflections, Refractions, soft shadows, complex lighting, shading trivial in ray tracing. In scan conversion? • Future? • Currently OpenGL uses scan conversion • Real-Time raytracing? (already possible) • Ray Tracing architecture (research at Stanford)
Acceleration • Testing each object for each ray is slow • Fewer Rays • Adaptive sampling [HW] , depth control • Generalized Rays • Beam tracing, cone tracing, pencil tracing etc. • Faster Intersections • Optimized Ray-Object Intersections • Fewer Intersections
Acceleration Structures • Reducing number of intersections • Bounding Volume hierarchy • If no intersection with bounding box, needn’t check objects • Grids • Uniform, Hierarchical • Spatial Hierarchies • Oct-trees, kd trees, BSP trees