370 likes | 387 Views
Explore the advantages of Compact and Hashed Grid data structures for accelerating ray tracing. Learn about their build algorithms, memory usage, and traversal efficiency, with a focus on minimizing time to image and decreasing memory footprint. Experiment with object list compression in Hashed Grids for further optimization in dynamic scenes. Compare results and performance metrics for different scenes and models in ray tracing applications. Discover the potential of extending to hierarchical grids and other acceleration structures for future work in rendering optimization.
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