Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is essentially just a port of the parallel bvh creation from svenstaro#80
Most of the added code outside the build functions was added for testing, with the main changes being the build functions being rewritten to work on mutable slices of indices instead of recursively passing back an index.
Based on the polyanya baking bench, this is about 10% faster singlethreaded (with the rayon feature disabled, ~9.4ms main -> 8.4ms pr), or about 60% faster when multithreaded (~9.4ms main -> ~3.5ms pr). Even with a single thread rayon taskpool it's still faster than main (~8.9ms), and gets faster up until 4-5 threads on my machine, at which point gains become tiny, then non existent (2Threads: ~5.5ms, 4T: ~3.8ms, 6T: ~3.4ms, 8T: ~3.4ms)
I had a bevy tasks implementation as well, but it was quite a bit slower than the single threaded version so I didn't bother with it.