MSBVH: An Efficient Acceleration Data Structure for Ray Traced - - PowerPoint PPT Presentation

msbvh an efficient acceleration data structure for ray
SMART_READER_LITE
LIVE PREVIEW

MSBVH: An Efficient Acceleration Data Structure for Ray Traced - - PowerPoint PPT Presentation

MSBVH: An Efficient Acceleration Data Structure for Ray Traced Motion Blur Leonhard Gr unschlo Martin Stich Sehera Nawaz Alexander Keller August 6, 2011 Principles of Accelerated Ray Tracing Hierarchical culling object list


slide-1
SLIDE 1

MSBVH: An Efficient Acceleration Data Structure for Ray Traced Motion Blur

Leonhard Gr¨ unschloß Martin Stich Sehera Nawaz Alexander Keller August 6, 2011

slide-2
SLIDE 2

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-3
SLIDE 3

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-4
SLIDE 4

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-5
SLIDE 5

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-6
SLIDE 6

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-7
SLIDE 7

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-8
SLIDE 8

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-9
SLIDE 9

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-10
SLIDE 10

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

slide-11
SLIDE 11

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

slide-12
SLIDE 12

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-13
SLIDE 13

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-14
SLIDE 14

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-15
SLIDE 15

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-16
SLIDE 16

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-17
SLIDE 17

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-18
SLIDE 18

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-19
SLIDE 19

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-20
SLIDE 20

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-21
SLIDE 21

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-22
SLIDE 22

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-23
SLIDE 23

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

slide-24
SLIDE 24

Principles of Accelerated Ray Tracing

Hierarchical culling

◮ object list partitioning ⇒ BVH

◮ bounded memory, but overlapping bounding volumes

◮ spatial partitioning ⇒ kd-tree

◮ nodes do not overlap, but reference duplication

slide-25
SLIDE 25

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise

slide-26
SLIDE 26

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-27
SLIDE 27

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-28
SLIDE 28

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-29
SLIDE 29

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-30
SLIDE 30

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-31
SLIDE 31

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-32
SLIDE 32

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-33
SLIDE 33

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

slide-34
SLIDE 34

SBVH

Best of both worlds

◮ object list partitioning whenever overlap is small ◮ spatial partitioning otherwise ◮ use spatial splits to build BVH with reference duplication

How to support motion blur?

slide-35
SLIDE 35

Multiple BVHs Sharing Identical Topology

Convex combination of bounding boxes yields conservative BVH

slide-36
SLIDE 36

Multiple BVHs Sharing Identical Topology

Convex combination of bounding boxes yields conservative BVH

slide-37
SLIDE 37

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0.5

slide-38
SLIDE 38

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0.5

slide-39
SLIDE 39

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0 t=1 t=0.5

slide-40
SLIDE 40

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0 t=1 t=0.5

slide-41
SLIDE 41

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0 t=1 t=0.5

slide-42
SLIDE 42

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0 t=1 t=0.5

slide-43
SLIDE 43

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0 t=1 t=0.5

◮ acceptable memory overhead

slide-44
SLIDE 44

Multiple BVHs Sharing Identical Topology

Example: linear interpolation at leaf level

t=0 t=1 t=0.5

◮ acceptable memory overhead ◮ allows for very tight bounding boxes for every ray time t

slide-45
SLIDE 45

Interpolation and Spatial Splits

Can a kd-tree be interpolated?

slide-46
SLIDE 46

Interpolation and Spatial Splits

Can a kd-tree be interpolated?

◮ objects can move across split planes

◮ thus node references change!

slide-47
SLIDE 47

Interpolation and Spatial Splits

Can a kd-tree be interpolated?

◮ objects can move across split planes

◮ thus node references change!

◮ hierarchy over convex hulls is inefficient

slide-48
SLIDE 48

Interpolation and Spatial Splits

Can a kd-tree be interpolated?

◮ objects can move across split planes

◮ thus node references change!

◮ hierarchy over convex hulls is inefficient ◮ splitting along time-axis requires lots of memory

slide-49
SLIDE 49

Our Contribution

Extend the SBVH to handle motion blur (MSBVH)

◮ by computing multiple bounding volumes per node ◮ using classic bounding volume interpolation traversal

slide-50
SLIDE 50

Our Contribution

Extend the SBVH to handle motion blur (MSBVH)

◮ by computing multiple bounding volumes per node ◮ using classic bounding volume interpolation traversal

◮ which includes spatial splits

slide-51
SLIDE 51

Our Contribution

Extend the SBVH to handle motion blur (MSBVH)

◮ by computing multiple bounding volumes per node ◮ using classic bounding volume interpolation traversal

◮ which includes spatial splits

◮ memory-efficient (MSBVH) ◮ reduced bounding volume overlap (MSBVH)

Note: we assume the hierarchy is rebuilt per frame

slide-52
SLIDE 52

Algorithm

t=0 t=1

slide-53
SLIDE 53

Algorithm

t=0 t=1 t=0.5

  • 1. Build the SBVH for t = 0.5 to determine topology
slide-54
SLIDE 54

Algorithm

t=0 t=1 t=0.5

  • 1. Build the SBVH for t = 0.5 to determine topology
  • 2. Compute partial primitives in leaf nodes
slide-55
SLIDE 55

Algorithm

t=0 t=1 t=0.5

  • 1. Build the SBVH for t = 0.5 to determine topology
  • 2. Compute partial primitives in leaf nodes
slide-56
SLIDE 56

Algorithm

t=0 t=1 t=0.5

  • 1. Build the SBVH for t = 0.5 to determine topology
  • 2. Compute partial primitives in leaf nodes
  • 3. Compute corresponding bounds for t = 0 and t = 1
slide-57
SLIDE 57

Algorithm

t=0 t=1 t=0.5

  • 1. Build the SBVH for t = 0.5 to determine topology
  • 2. Compute partial primitives in leaf nodes
  • 3. Compute corresponding bounds for t = 0 and t = 1
slide-58
SLIDE 58

Algorithm

t=0 t=1

  • 1. Build the SBVH for t = 0.5 to determine topology
  • 2. Compute partial primitives in leaf nodes
  • 3. Compute corresponding bounds for t = 0 and t = 1
  • 4. Propagate bounds to the parent nodes
slide-59
SLIDE 59

Algorithm

t=0 t=1

  • 1. Build the SBVH for t = 0.5 to determine topology
  • 2. Compute partial primitives in leaf nodes
  • 3. Compute corresponding bounds for t = 0 and t = 1
  • 4. Propagate bounds to the parent nodes
  • 5. Interpolate these bounds during traversal
slide-60
SLIDE 60

Triangles and AABB-Hierarchies under Linear Motion

t=0 t=1 t=0.5

  • 1. Use Sutherland-Hodgman to clip against leaf AABB
  • 2. Results in barycentric coordinates of polygon vertices
slide-61
SLIDE 61

Triangles and AABB-Hierarchies under Linear Motion

t=0 t=1 t=0.5

  • 1. Use Sutherland-Hodgman to clip against leaf AABB
  • 2. Results in barycentric coordinates of polygon vertices
  • 3. Compute transformed polygon for t = 0 and t = 1
slide-62
SLIDE 62

Triangles and AABB-Hierarchies under Linear Motion

t=0 t=1 t=0.5

  • 1. Use Sutherland-Hodgman to clip against leaf AABB
  • 2. Results in barycentric coordinates of polygon vertices
  • 3. Compute transformed polygon for t = 0 and t = 1
  • 4. Bound the transformed polygon
slide-63
SLIDE 63

Triangles and AABB-Hierarchies under Linear Motion

t=0 t=1 t=0.5

  • 1. Use Sutherland-Hodgman to clip against leaf AABB
  • 2. Results in barycentric coordinates of polygon vertices
  • 3. Compute transformed polygon for t = 0 and t = 1
  • 4. Bound the transformed polygon
  • 5. No extra storage necessary
slide-64
SLIDE 64

Clipping Displaced Subdivision Surfaces

slide-65
SLIDE 65

Clipping Displaced Subdivision Surfaces

  • 1. Subdivide along surface parametrization
  • 2. Bound individual elements, e.g. using interval arithmetic
slide-66
SLIDE 66

Clipping Displaced Subdivision Surfaces

  • 1. Subdivide along surface parametrization
  • 2. Bound individual elements, e.g. using interval arithmetic
  • 3. Clip resulting bounding boxes
  • 4. The union conservatively bounds the clipped primitive
slide-67
SLIDE 67

Extensions

◮ two-level hierarchy: animated instances

slide-68
SLIDE 68

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

A(t)

slide-69
SLIDE 69

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

A(0) A(1/3) A(1) A(2/3)

slide-70
SLIDE 70

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

◮ multiple motion segments

slide-71
SLIDE 71

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

◮ multiple motion segments

◮ restricted to powers of two for propagation up the hierarchy

2 4 2 8 4 8 8

slide-72
SLIDE 72

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

◮ multiple motion segments

◮ restricted to powers of two for propagation up the hierarchy

3 5 2 7 15 14 210

slide-73
SLIDE 73

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

◮ multiple motion segments

◮ restricted to powers of two for propagation up the hierarchy

◮ higher-order interpolation

slide-74
SLIDE 74

Extensions

◮ two-level hierarchy: animated instances ◮ interpolate transformation matrix elements to force linear

motion

◮ multiple motion segments

◮ restricted to powers of two for propagation up the hierarchy

◮ higher-order interpolation ◮ refitting over multiple frames

slide-75
SLIDE 75

Results

BVH traversal with linear interpolation

◮ reduced SAH cost ◮ significantly less intersection tests

⇒ Video

slide-76
SLIDE 76

Results

BVH traversal with linear interpolation

◮ reduced SAH cost ◮ significantly less intersection tests ◮ often less traversal steps ◮ about 20% rendering speed-up for many scenes

slide-77
SLIDE 77

Summary

In practice, works well for single frames

◮ helps well whenever SBVH helps ◮ increased build times (between BVH and kd-tree) ◮ prototype implemention in OptiX

slide-78
SLIDE 78

Summary

In practice, works well for single frames

◮ helps well whenever SBVH helps ◮ increased build times (between BVH and kd-tree) ◮ prototype implemention in OptiX ◮ spatial splits only avoid overlap for t = 0.5

◮ topology determined for t = 0.5 ◮ problematic for incoherent motion

slide-79
SLIDE 79

Weta Digital is hiring!

http://wetafx.co.nz/siggraph2011