This is a pretty big one. The headline feature is kind of boring, optional bounding boxes stored in the tree. But it flips the numbers so much that I had to rewrite the benchmark suite; not just because my earlier code was 💩 totally based on simplified assumptions not holding true...
Like now, besides a healty number of synthetic distributions, we also have some real world dataset being used for the comparative analysis vs nanoflann (the baseline dotted line in these plots).
With the has_aabb configuration flag this finally stopped being a problem, as shown in the relevant detailed benchmarks.
For a tiny price in memory, you get much faster queries far from the surface, and in general good behaviour regardless of the spatial distribution.
I also added plots for the fast variants of the query functions. Less flexible but the boost in performance they provide is there if your application is fine with that.
The rest
- OpenMP is now optional: the "no hard deps" promise is a bit more honest.
- Minor fixes to the ray queries: the CPU path now agrees with GLSL which was always right.
- General improvements to the documentation.
Enjoy!