370 likes | 385 Views
Compact, Fast and Robust Grids for Ray Tracing. 19 th Eurographics Symposium on Rendering. Ares Lagae & Philip Dutré. EGSR 2008. Wednesday, June 25th. Introduction. Acceleration structures for ray tracing Kd-tree, BVH, … Build time: slower (super-linear) Render time: faster Grid
E N D
Compact, Fast and RobustGrids for Ray Tracing 19th Eurographics Symposium on Rendering Ares Lagae & Philip Dutré 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
0 1 2 0 1 2 Grid Data Structures • Grid and linearized grid 2D 2 0 1 linearize 0 1 2 3 4 5 6 7 8 1D
Grid Data Structures • Data structure using linked lists 0 1 2 3 4 5 6 7 8 1 1 0 2 2 0 2 2 1 1 • 1 word / cell • 2/3 words / object reference 0
: unused space Grid Data Structures • Data structure using dynamic arrays 0 1 2 3 4 5 6 7 8 2 0 2 1 2 1 2 1 4 3 2 2 2 1 2 1 2 1 1 1 0 0 1 0 2 2 1 2 2 • 3 words / cell • 1-2 words / object reference
Compact Grid • Data structure • Concatenate object lists, store begin index 0 1 2 3 4 5 6 7 8 0 0 1 2 3 6 8 9 10 11 1 1 0 0 1 2 1 2 0 2 2 0 1 2 3 4 5 6 7 8 9 10 11 1 word / cell, 1 word / object reference
Compact Grid • Build algorithm (Bound – Count – Accumulate – Insert) 1. Bound Compute bounding box of objects Determine grid resolution Grid sizelinear in number of objects
Compact Grid • Build algorithm (Bound – Count – Accumulate – Insert) 2. Count Compute size of object lists (1st pass) 0 1 2 3 4 5 6 7 8 0 1 1 1 3 2 1 1 1 0 1 2 3 4 5 6 7 8 9 10 11
Compact Grid • Build algorithm (Bound – Count – Accumulate – Insert) 3. Accumulate Compute indices of object lists 0 1 2 3 4 5 6 7 8 0 1 2 3 6 8 9 10 11 0 1 2 3 4 5 6 7 8 9 10 11
Compact Grid • Build algorithm (Bound – Count – Accumulate – Insert) 4. Insert Reversely insert the object references (2nd pass) 0 1 2 3 4 5 6 7 8 0 0 1 2 3 6 8 9 10 1 1 0 0 1 2 1 2 0 2 2 0 1 2 3 4 5 6 7 8 9 10 11
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? yes Grid is sparse, up to 99% of the cells are empty
Hashed Grid • Row displacement compression C 1 5 11 12 15
Hashed Grid • Row displacement compression C O 1 5 11 12 15 H
Hashed Grid • Row displacement compression C O 1 0 1 5 11 12 15 H 1
Hashed Grid • Row displacement compression C O 1 0 1 5 1 5 11 12 15 H 1 5
Hashed Grid • Row displacement compression C O 1 0 1 5 1 5 11 1 11 12 15 H 1 5 11
Hashed Grid • Row displacement compression C O 1 0 1 5 1 5 11 1 11 12 15 3 12 15 H 1 5 12 11 15
Hashed Grid • Row displacement compression O 0 1 1 3 C[i,j] H[O[i] + j] H 1 5 12 11 15
Hashed Grid • Row displacement compression D O 0 1 1 3 |D| + |O| + |H| << |C| H 1 5 12 11 15
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 • 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 Cruiser • 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 Thai Statue
Applications • Interactive ray tracing of dynamic scenes Scene: 260 K triangles - FPS: 8.38 FPS (512 x 512)
Applications • Ray tracing large models • 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 David • Scene: 372.77 M triangles, 12.50 GB • Time to image: - / 60.75 s • Memory usage: - / 2.36 GB St. Matthew
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? • Acknowledgments • Ares 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 C O 1 0 1 5 1 5 11 1 11 12 15 3 12 15 C[i,j] H[O[i] + j] H 1 5 12 11 15