1 unstable release
0.1.0 | Jul 25, 2024 |
---|
#223 in Graphics APIs
1MB
4.5K
SLoC
OBVHS - BVH Construction and Traversal Library
- PLOC BVH2 builder with Parallel Reinsertion and spatial pre-splits.
- CWBVH An eight-way compressed wide BVH8 builder. Each BVH Node is compressed so that it takes up only 80 bytes per node.
- CPU traversal for both BVH2 and CWBVH (SIMD traversal, intersecting 4 nodes at a time)
- For GPU traversal example, see the Tray Racing benchmark
OBVHS optionally uses rayon to parallelize building. Many parts of the building process are parallelized, but single threaded building speed has initally been the priority so there is still quite a bit of room for improvement in parallel building performance.
Benchmarks
See Tray Racing.
Acknowledgments
- Tomasz Stachowiak for the initial rust/embree CWBVH builder, HLSL traversal, and numerous discussions along the way.
- Jan Van Bergen for their wonderful CUDA path tracer that implements CWBVH.
- Arsène Pérard-Gayot for their series of articles on BVHs and BVH library.
- H. Ylitie et al. for Efficient Incoherent Ray Traversal on GPUs Through Compressed Wide BVHs.
- D. Meister et al. for Parallel Locally-Ordered Clustering for Bounding Volume Hierarchy Construction, Parallel Reinsertion for Bounding Volume Hierarchy Optimization, and Performance Comparison of Bounding Volume Hierarchies for GPU Ray Tracing.
Dependencies
~4–34MB
~537K SLoC