This document summarizes a class on acceleration structures for ray tracing. It discusses building bounding volume hierarchies and using them to accelerate ray intersection tests. Uniform grids, kd-trees, and binary space partitioning trees are covered as approaches for spatial subdivision. The role of acceleration structures in speeding up global illumination calculations is also discussed.
2. CS 354 2
Today’s material
In-class quiz
On global illumination lecture
Lecture topic
Project 4
Acceleration structures
3. CS 354 3
My Office Hours
Tuesday, before class
Painter (PAI) 5.35
8:45 a.m. to 9:15
Thursday, after class
ACE 6.302
11:00 a.m. to 12
Randy’s office hours
Monday & Wednesday
11 a.m. to 12:00
Painter (PAI) 5.33
4. CS 354 4
Last time, this time
Last lecture, we discussed
Global illumination
This lecture
Acceleration structures
Projects
Project 4 on ray tracing on Piazza
Due May 2, 2012
Get started!
5. CS 354 5
On a sheet of paper
Daily Quiz • Write your EID, name, and date
• Write #1, #2, #3, #4 followed by its answer
Multiple choice: In the Russian
Roulette approach to termination of Multiple choice: Modeling the
tracing recursive rays, termination influence of participating media
occurs simulates
a) after a fixed number of ray a) motion blur
traces
b) fog
b) after a random number of ray
casts between 1 and a fixed c) smoke
constant
d) a., b., and c.
c) when an analytic solution can
be reached e) b. and c.
d) every trace has a random True of False: Classic Radiosity
chance of being terminated assume the Bidirectional Reflectance
Distribution Function of all surfaces in
True or False: A bidirectional the scene are Lambertian.
reflectance distribution function
returns a negative value
approximately 50% of the time.
6. CS 354 6
Project 4
Provides ray tracing framework
Use FLTK toolkit for user interface
Includes sample scenes—.ray files
dragon.ray
12. CS 354 12
Two Versions of
Rendering Equation
Occlusion (G) is zero
o
Le (x, ω , λ , t ) +
Le (x, ω , λ , t ) +
Lo (x, ω , λ , t ) =
∫
Ω
f r (x, ω ′, ω , λ , t ) Li (x, ω ′, λ , t ) (−ω ′ • n) dω ′ Lo (x, ω , λ , t ) =
∫ f r (x, ωyx , ω , λ , t ) L(y, ωyx , λ , t ) G (x, y ) dy
y∈Γ
Integrate over hemisphere Integrate over all surface points
13. CS 354 13
Photon Mapping
Two-pass global illumination algorithm
Developed by Henrick Jensen (1996)
Two passes
Randomly distribute photons around the scene
Called “photon map construction”
Render treating photons as mini-light sources
Capable of efficiently generating otherwise very
expensive effects
Caustics
Diffuse inter-reflections, such as color bleed
Sub-surface scattering
14. CS 354 14
Light Tracing
Trace rays from the light
Contribution rays accumulate image samples
16. CS 354 16
Global Illumination Often Gated
by Ray Tracing Speed
Shooting rays tends to be the bottleneck
Why?
Lots of rays cast for quality
Shadow rays, lots for soft shadows
Reflection and refraction rays
Speeding up global illumination generally
means speeding up tracing of rays
Shading operations can be expensive too
But rays involve data structure traversal
17. CS 354 17
More bounces
Recursive Rays
Reflections and
refractions can spawn
lots of rays
Fewer bounces 17
19. CS 354 19
Distribution Ray Tracing
Soft shadows
Distribute shadow rays over light source region
All shadow rays No shadow rays Some shadow rays
hit light source, hit light source, hit light source,
fully illuminated fully shadowed partially shadowed
20. CS 354 20
Distribution Ray Tracing
Motion blur
Distribute rays over time
Pool Balls
Tom Porter
RenderMan
21. CS 354 21
Distribution Ray Tracing
Depth of field
Distribute rays across a discrete camera aperture
No depth-of-field More rays
Jittered
depth-of-field
More images for depth-of-field Even more rays
23. CS 354 23
Accelerating Ray Trace
Intersection Operations
Two key optimizations
3. Exploit binary searching
Rather than linear searches
4. Group objects spatially
Discard hierarchically
Use quick-and-coarse tests…
…to avoid slow-and-exact intersection tests
24. CS 354 24
Acceleration Structures:
Bounding Volume Hierarchies
Build hierarchy of bounding volumes
Bounding volume of interior node has its children
25. CS 354 25
Accelerate Ray Intersections
Traverse hierarchy to accelerate ray
intersections
Intersect node content
only if ray hits the
bounding volume
Skip intersection A, D, E, and F
26. CS 354 26
Accelerate Ray Intersection
Algorithm
Sort hits and detect early termination
FindIntersection( Ray ray, Node node )
{
// Find intersections with child node bounding volumes
…
// Sort intersections closest to farthest
…
// Process intersections, checking for early termination
min_t = infinity;
for each intersected child i {
if (min_t < bv_t[i]) break;
shape_t = FindIntersection(ray, child);
if (shape_t < min_t) { min_t = shape_t; }
}
return min_t; // closest intersection
}
27. CS 354 27
Bounding Volumes
Axis-Aligned Bounding Boxes (AABB)
min (x,y,z) & max(x,y,z)
Trivial plane equations
Bounding spheres
Point and radius
Ray and sphere intersection is easy
Solving a quadratic equation
Oriented Bounding Box
Might have tighter bounds than AABB
Convex Polyhedron (Polytope)
28. CS 354 28
Spatial Hierarchy
Uniform grid
Quadtree (2D) and Octree (3D)
Exactly four or eight children
Equal area/volume for each children
KD Tree
Two children, splitting in X, Y, or Z
Axis aligned splitting planes
Not necessarily equal area/volume
Binary Space Partitioning (BSP) Tree
Arbitrary splitting planes
Just two children
29. CS 354 29
Space Subdivision
Approaches
Uniform grid Octree
Quadtree
Binary
KD Tree Space
Partitioning
Tree
30. CS 354 30
Uniform Grid Construction
Preprocess scene
2. Find bounding box
3. Determine grid
resolution
31. CS 354 31
Uniform Grid Construction
Preprocess scene
2. Find bounding box
3. Determine grid
resolution
4. Place object in cell if
its bounding box
overlaps the cell
32. CS 354 32
Uniform Grid Construction
Preprocess scene
2. Find bounding box
3. Determine grid
resolution
4. Place object in cell if
its bounding box
overlaps the cell
5. Check that object
overlaps cell
33. CS 354 33
Uniform Grid Traversal
After processing…
Traverse grid
3D line = 3D-DDA
Digital Differential Analyzer
Advantages
Simple construction
Simple traversal
Disadvantage
Poor at sparse or huge
scenes
34. CS 354 34
Binary Space Partitioning Tree
2D view of BSP
35. CS 354 35
Binary Space Partitioning Trees
Recursive search
Partitioning plane has two nodes
FindIntersection( Ray ray, Node node )
{
if node is leaf {
intersect ray with each object in node
return closest object (or nil)
}
near = child of node in half space containing ray’s origin
far = the other child
hit = FindIntersection( ray, near )
if hit is null and ray intersections plane defined by node {
hit = FindIntersection( ray, far )
}
return hit;
}
37. CS 354 37
Optimizing Bounding Hierarchies
Complex meshes need to be partitioned
into bounding hierarchy
[Saut, Sidobre, 2012]
38. CS 354 38
Octree Building
Building octree from boundary representation
39. CS 354 39
KD-tree
Like an Octree
But dividing planes aren’t necessarily in even
octo squares
Tighter bounds
[Mahmoud Zidan]
40. CS 354 40
Close Cousin of Ray Tracing:
Volume Rendering
Common task: visualization of volumetric data
Data arranged in 3D “voxel” grid
Voxel = volume element
Applications: medical, oil & gas exploration
41. CS 354 41
Simple Case of Ray Casting
Rays are all coherent
GPU-oriented Volume rendering
Draw 3D textured polygons slicing through a 3D texture
Apply transfer function
Blend in ray order—use framebuffer blending
42. CS 354 42
Transfer Function
Give viewer control of how volumetric data
maps to color & opacity
Transfer functions enable visualization of
otherwise difficult-to-understand mass of data
43. CS 354 43
Volume Rendering Examples
Head with clip planes
Liver tumor
44. CS 354 44
Next Class
Next lecture
Performance analysis
Considerations for tuning interactive graphics
applications
Reading
Chapter 8, 455-460
Chapter 11, 578-601
Project 4
Project 4 is a simple ray tracer
Due Wednesday, May 2, 2012