Title: Lecture 8 Advanced Rendering Ray Tracing, Radiosity
1Lecture 8Advanced Rendering Ray Tracing,
Radiosity NPR
2Ray Tracing
Slide Courtesy of Roger Crawfis, Ohio State
3Ray-Tracing Pseudocode
- For each ray r from eye to pixel, color the pixel
the value returned by ray_cast(r)
ray_cast(r) s ? nearest_intersected_surface(
r) p ? point_of_intersection(r, s) u?
reflect(r, s, p) v? refract(r, s, p) c
? phong(p, s, r) s.kreflect ?
ray_cast(u) s.krefract ?
ray_cast(v) return(c)
Slide Courtesy of Roger Crawfis, Ohio State
4Pseudocode Explained
- s ? nearest_intersected_surface(r)
- Use geometric searching to find the nearest
surface s intersected by the ray r - p ? point_of_intersection(r, s)
- Compute p, the point of intersection of ray r
with surface s - u? reflect(r, s, p) v? refract(r, s, p)
- Compute the reflected ray u and the refracted ray
v using Snells Laws
Slide Courtesy of Roger Crawfis, Ohio State
5Reflected and Refracted Rays
- Reflected and refracted rays are computed using
Snells Law
Slide Courtesy of Roger Crawfis, Ohio State
6Pseudocode Explained
- phong(p, s, r)
- Evaluate the Phong reflection model for the ray r
at point p on surface s, taking shadowing into
account (see next slide) - s.kreflect ? ray_cast(u)
- Multiply the contribution from the reflected ray
u by the specular-reflection coefficient kreflect
for surface s - s.krefract ? ray_cast(v)
- Multiply the contribution from the refracted ray
v by the specular-refraction coefficient krefract
for surface s
Slide Courtesy of Roger Crawfis, Ohio State
7About Those Calls to ray_cast()...
- The function ray_cast() calls itself recursively
- There is a potential for infinite recursion
- Consider a hall of mirrors
- Solution limit the depth of recursion
- A typical limit is five calls deep
- Note that the deeper the recursion, the less the
rays contribution to the image, so limiting the
depth of recursion does not affect the final
image much
Slide Courtesy of Roger Crawfis, Ohio State
8Pros and Cons of Ray Tracing
- Advantages of ray tracing
- All the advantages of the Phong model
- Also handles shadows, reflection, and refraction
- Disadvantages of ray tracing
- Computational expense
- No diffuse inter-reflection between surfaces
- Not physically accurate
- Other techniques exist to handle these
shortcomings, at even greater expense!
Slide Courtesy of Roger Crawfis, Ohio State
9An Aside on Antialiasing
- Our simple ray tracer produces images with
noticeable jaggies - Jaggies and other unwanted artifacts can be
eliminated by antialiasing - Cast multiple rays through each image pixel
- Color the pixel the average ray contribution
- An easy solution, but it increases the number of
rays, and hence computation time, by an order of
magnitude or more
Slide Courtesy of Roger Crawfis, Ohio State
10Reflections
- Mathematically, what does this mean?
Slide Courtesy of Roger Crawfis, Ohio State
11Glossy Reflections
- We need to integrate the color over the reflected
cone. - Weighted by the reflection coefficient in that
direction.
Slide Courtesy of Roger Crawfis, Ohio State
12Translucency
- Likewise, for blurred refractions, we need to
integrate around the refracted angle.
Slide Courtesy of Roger Crawfis, Ohio State
13Translucency
Slide Courtesy of Roger Crawfis, Ohio State
14Translucency
Slide Courtesy of Roger Crawfis, Ohio State
15Shadows
- Ray tracing casts shadow feelers to a point light
source. - Many light sources are illuminated over a finite
area. - The shadows between these are substantially
different. - Area light sources cast soft shadows
- Penumbra
- Umbra
16Soft Shadows
Slide Courtesy of Roger Crawfis, Ohio State
17Soft Shadows
Penumbra
Umbra
Slide Courtesy of Roger Crawfis, Ohio State
18Camera Models
- Up to now, we have used a pinhole camera model.
- These has everything in focus throughout the
scene. - The eye and most cameras have a larger lens or
aperature.
Slide Courtesy of Roger Crawfis, Ohio State
19Depth-of-Field
20Motion Blur
Slide Courtesy of Roger Crawfis, Ohio State
21Supersampling
1 sample per pixel
256 sample per pixel
16 sample per pixel
Slide Courtesy of Roger Crawfis, Ohio State
22More On Ray-Tracing
- Already discussed recursive ray-tracing!
- Improvements to ray-tracing!
- Area sampling variations to address aliasing
- Cone tracing (only talk about this)
- Beam tracing
- Pencil tracing
- Distributed ray-tracing!
23Area Subdivision (Warnock)(mixed object/image
space)
Clipping used to subdivide polygons that are
across regions
24Area Subdivision (Warnock)
- Initialize the area to be the image plane
- Four cases
- No polygons in area done
- One polygon in area draw it
- Pixel sized area draw closest polygon
- Front polygon covers area draw it
- Otherwise, subdivide and recurse
25BSP (Binary Space Partition) Trees
Partition space into 2 half-spaces via a
hyper-plane
a
b
c
b
a
e
e
d
c
d
26BSP Trees
Creating the BSP Tree
BSPNode BSPCreate(polygonList pList) if(pList
is empty) return NULL pick a polygon p from
pList split all polygons in pList by p and
insert pieces into pList polygonList coplanar
all polygons in pList coplanar to p
polygonList positive all polygons in pList in
ps positive halfspace polygonList negative
all polygons in pList in ps negative
halfspace BSPNode b new BSPNode
b-gtcoplanar coplanar b-gtpositive
BSPCreate(positive) b-gtnegative
BSPCreate(negative) return b
27BSP Trees
Rendering the BSP Tree
BSPRender(vertex eyePoint, BSPNode b) if(b
NULL) return if(eyePoint is in positive
half-space defined by b-gtcoplanar)
BSPRender(eyePoint,b-gtnegative) draw all
polygons in b-gtcoplanar BSPRender(eyePoint,
b-gtpositive) else BSPRender(eyePoint,b-gt
positive) draw all polygons in
b-gtcoplanar BSPRender(eyePoint,b-gtnegative)
28BSP Trees
- Advantages
- view-independent tree
- anti-aliasing (see later)
- transparency
- Disadvantages
- many small polygons
- over-rendering
- hard to balance tree
29Portals
Separate environment into cells Preprocess to
find potentially visible polygons from any cell
30Portals
Treat environment as a graph Nodes cells, Edges
portals Cell to cell visibility must go along
edges
31More spatial subdivision methods
- Octree
- Bounding volume (box, sphere)
- Oriented Bounding Box