Lecture 13: Acceleration Structures

15
Lecture 13: Acceleration Structures Fall 2004 Kavita Bala Computer Science Cornell University © Kavita Bala, Computer Science, Cornell University Making RT faster Ray Tracing Acceleration Techniques Faster Intersections Fewer Rays Faster Ray-Object Intersections Fewer Ray-Object Intersections Regular Rays Generalized Rays •For each pixel, O(N) •For each light, k shadow rays •For GI and antialiasing: many rays per pixel

Transcript of Lecture 13: Acceleration Structures

1

Lecture 13:Acceleration Structures

Fall 2004Kavita Bala

Computer ScienceCornell University

© Kavita Bala, Computer Science, Cornell University

Making RT faster

Ray Tracing AccelerationTechniques

Faster Intersections

Fewer Rays

Faster Ray-ObjectIntersections

Fewer Ray-ObjectIntersections

Regular Rays

Generalized Rays•For each pixel, O(N)

•For each light, k shadow rays

•For GI and antialiasing: many rays per pixel

2

© Kavita Bala, Computer Science, Cornell University

Faster Ray-Object Intersections• Object bounding volumes

• Avoid intersection tests for expensive objects: e.g., polygon sets, spline surfaces– Ray/sphere or ray/cuboid test is fast

© Kavita Bala, Computer Science, Cornell University

Tight Fit to Bounding Volume

3

© Kavita Bala, Computer Science, Cornell University

Fewer Ray-Object Intersections• From O(N) to O(log N)• How?

– Apply the idea of bounding boxes hierarchically

– Cluster objects hierarchically– Single intersection might eliminate cluster

• Bounding volume hierarchy• Space subdivision

– Octree, Kd-tree, BSP-trees

© Kavita Bala, Computer Science, Cornell University

Bounding Volume Hierarchy• Hierarchical object bounding volumes• Spheres, axis-aligned bounding boxes (AABB),

oriented bounding boxes(OBB): fast

4

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration

• Trace ray against root node• If ray intersects node

– Trace ray against ALL children (Recurse)

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration• Trace ray against root node• If ray intersects node

– Trace ray against ALL children (Recurse)

5

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration• If no intersection, eliminate tests with all

children!

© Kavita Bala, Computer Science, Cornell University

BVH: Construction• Group objects together

– Top-down: how to split?– Bottom-up: minimize surface area?

6

© Kavita Bala, Computer Science, Cornell University

BVH: Construction• Group objects together

– Top-down: how to split?– Bottom-up: minimize surface area?

© Kavita Bala, Computer Science, Cornell University

Fewer Ray-Object Intersections• From O(N) to O(log N)

• Bounding volume hierarchy

• Space subdivision– Octree (Quadtree in 2D)– Non-uniform (kd-tree)– BSP-tree

7

© Kavita Bala, Computer Science, Cornell University

Spatial Hierarchy• Hierarchical spatial subdivision

– Divides up space• Children are distinct and cover parent

© Kavita Bala, Computer Science, Cornell University

Construction• Maximum depth• Maximum number of elements in leaf

8

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration

9

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration

10

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration

© Kavita Bala, Computer Science, Cornell University

Intersection Acceleration1. Intersect ray with root: p = root.intersect(ray)

– If no intersection, done2. Find p in tree (node j = root.find(p))3. Test ray against elements in node j

– If intersection found, done– Else find exit point (q) from node j, p = q, goto 2

11

© Kavita Bala, Computer Science, Cornell University

Octree Properties• Front to back traversal• Problem: Same object in multiple cells

– Split object– Could repeatedly intersect: use mailboxes

© Kavita Bala, Computer Science, Cornell University

Solutions• Split object

– No repeated intersections and correct– But, could create lots of little objects

• Use mailboxes– Store intersection in the object: avoids

repeated intersection– What about correctness?

Need to check that intersection is in “current” bounding box

12

© Kavita Bala, Computer Science, Cornell University

Octree Problems• Distribution of objects• Chops up objects

© Kavita Bala, Computer Science, Cornell University

K-dimensional (kd) Tree• Spatial subdivision

– Subdivide only 1 dimension– Do not subdivide at the center

• Tracing with kd-tree unchanged

13

© Kavita Bala, Computer Science, Cornell University

Construction• Which axis to pick? • What point on the axis to pick?• One heuristic:

– Sort objects on each axis– Pick point corresponding to “middle” object– Pick axis that has “best” distribution of objects– L = n/2, R = n/2 (ideal)– Realistically,

minimize (L-R) andL approx. n/2, R approx. n/2

© Kavita Bala, Computer Science, Cornell University

BSP Tree• Generalization of kd-trees• Splitting plane is not axis aligned• Used in games: DOOM

12

3

4

57

6

14

© Kavita Bala, Computer Science, Cornell University

BSP Construction• Use a polygon to define the splitting plane• Other objects either split or stored high up

1

1

2 33

4

2

57

654 76

© Kavita Bala, Computer Science, Cornell University

How to construct?• Least-crossed criterion (random selection

of polygons)– Do not split many polygons

• Try to make it balanced

15

© Kavita Bala, Computer Science, Cornell University

BSP Traversal• Front to back ordering• Strict occlusion order (not closest object)

1

1

2 33

4

2

57

654 76

V