Post on 09-Jan-2016
description
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• Reflections (Mirrors)• Transparency • Interreflections• Detail (Textures etc.)• Complex Illumination• Realistic Materials• And many more
Turner Whitted 1980
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 Casting
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
Shadow Rays
• How much light is reaching point P?• Fire a shadow ray towards each light in the scene• Numerical problems?
AB
S
P
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
Acceleration Structures