Post on 24-Jan-2016
description
transcript
Compact, Fast and RobustGrids for Ray Tracing
Ares Lagae & Philip Dutré
19th Eurographics Symposium on Rendering
EGSR 2008 Wednesday, June 25th
Introduction
• Acceleration structures for ray tracing– Kd-tree, BVH, …
• Build time: slower (super-linear)• Render time: faster
– Grid• Build time: faster (linear)• Render time: slower
Minimize time to image– Time to image = render time + build time– Especially for dynamic scenes
Introduction
• Algorithms in general– CPU-bound
• Execution time = f( CPU speed )
– Memory-bound• Execution time = f( memory speed )
Accelerate by decreasing memory footprint
Minimize memory footprint– Especially for large models
Grid Data Structures
• Grid and linearized grid
2
1
0
0 1 2
0 1 2 3 4 5 6 7 8
2D
1D
linea
rize
0
1
2
Grid Data Structures
• Data structure using linked lists0 1 2 3 4 5 6 7 8
1 1 0 2
1
0
2 0 2 2
1
• 1 word / cell
• 2/3 words / object reference
Grid Data Structures
• Data structure using dynamic arrays0 1 2 3 4 5 6 7 8
1 1 0 0
1
2
1
2
0 2 2
2 0 2 1 2 1 2 1 4 3 2 2 2 1 2 1 2 1
• 3 words / cell
• 1-2 words / object reference : unused space
Compact Grid
• Data structure– Concatenate object lists, store begin index
0 0 1 2 6 8 9 10
0 1 2 3 4 5 6 7 8
11
1 1 0 0 1 1 2 0 2 2
0 1 2 3 4 5 6 7 8 9 10 11
1 word / cell, 1 word / object reference
3
2
3i i
NM S
V
Compact Grid
• Build algorithm (Bound – Count – Accumulate – Insert)
1. Bound Compute bounding box of objects
Determine grid resolution
Grid size linear in number of objects
Compact Grid
• Build algorithm (Bound – Count – Accumulate – Insert)
2. Count Compute size of object lists (1st pass)
0 1 1 1 2 1 1 1
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 9 10 11
3
Compact Grid
• Build algorithm (Bound – Count – Accumulate – Insert)
3. Accumulate Compute indices of object lists
0 1 2 3 8 9 10 11
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8 9 10 11
6
Compact Grid
• Build algorithm (Bound – Count – Accumulate – Insert)
4. Insert Reversely insert the object references (2nd pass)
0 0 1 2 6 8 9 10
0 1 2 3 4 5 6 7 8
1 1 0 0 1 1 2 0 2 2
0 1 2 3 4 5 6 7 8 9 10 11
2
3
Compact Grid
• Build algorithm– Time complexity
Linear in the number of objects
– Space complexity Linear in the number of objects
• Traversal algorithm– Any grid traversal algorithm
Hashed Grid
• Reduce memory footprint even further– Fast build algorithm– Efficient access during traversal
• Redundancy– Object lists? no
Experiments with object list compression failed
– Cells? yesGrid is sparse, up to 99% of the cells are empty
Hashed Grid
• Row displacement compression
1
5
11
12 15
C
Hashed Grid
• Row displacement compression
1
5
11
12 15
C O
H
Hashed Grid
• Row displacement compression
1
5
11
12 15
1
1
C O
H
0
Hashed Grid
• Row displacement compression
1
5
11
12 15
1
5
1 5
C O
H
0
1
Hashed Grid
• Row displacement compression
1
5
11
12 15
1
5
11
111 5
C O
H
0
1
1
Hashed Grid
• Row displacement compression
1
5
11
12 15
1
5
11
12 15
12 11 151 5
C O
H
0
1
1
3
Hashed Grid
• Row displacement compression
12 11 151 5
O
HC[i,j] H[O[i] + j]
0
1
1
3
Hashed Grid
• Row displacement compression
12 11 151 5
D O
H|D| + |O| + |H| << |C|
0
1
1
3
4/3( ) ( )O M O M
Hashed Grid
• Build algorithm– Bound– Compute domain bits– Compute hash function– Count– Accumulate– Insert
• Time complexity:
Results
• Comparison traditional grid data structures
Memory usage Build time
Results
• Hashed grid
Tha
i Sta
tue
• Scene: 28.06 M triangles, 343.32 MB
• Memory object lists: 69.78 MB
• Memory cells: 152.75 MB 8.97 MB
• Build time: 1.17 s 1.76 s
• Render time: 1.55 s 1.43 s
Cru
iser
• Scene: 3.64 M triangles, 124.84 MB
• Memory object lists: 28.84 MB
• Memory cells: 55.48 MB 6.20 MB
• Build time: 0.39 s 0.72 s
• Render time: 2.49 s 2.52 s
Applications
• Interactive ray tracing of dynamic scenes
Scene: 260 K triangles - FPS: 8.38 FPS (512 x 512)
Applications
• Ray tracing large models
St.
Mat
thew • Scene: 372.77 M triangles, 12.50 GB
• Time to image: - / 60.75 s
• Memory usage: - / 2.36 GB
Dav
id
• Scene: 56.23 M triangles, 1.89 GB
• Time to image: 7.55 s / 10.21 s
• Memory usage: 1.17 GB / 379.94 MB
Conclusion & Future Work
• Conclusion– Compact grid method
Optimal grid representation (1 word / cell, 1 word / object reference)
– Hashed grid method Applied perfect spatial hashing to grids for ray tracing
• Future Work– Extend to hierarchical grids– Extend to other acceleration structures
Thanks!
• Questions?
AcknowledgmentsAres Lagae is a Postdoctoral Fellow of the Research Foundation Flanders (FWO)The Stanford 3D Scanning Repository, The Digital Michelangelo Project, the bwfirt benchmark, Matthias Rolf, Bernhard Finkbeiner and Greg Ward
Robust Grid Traversal
• Discard intersections outside of cell Not robust
{}
{…}
Robust Grid Traversal
• Discard intersections outside of cell Not robust
Regular grid traversal
Robust Grid Traversal
Do not discard intersections outside of cell– Keep closest intersection, terminate after the intersection
Regular grid traversal Robust grid traversal
Parallelization
• Using sort-middle approach of Ize et al.
Asian Dragon Nature
Results
• Comparison traditional grid data structures
Memory usage Build time
Parallelization
• Using sort-middle approach of Ize et al.
Asian Dragon Nature
Hashed Grid
• Row displacement compression
1
5
11
12 15
1
5
11
12 15
12 11 151 5
C O
HC[i,j] H[O[i] + j]
0
1
1
3