igd-geo / pasture

Rust library for point cloud processing
Apache License 2.0
72 stars 9 forks source link

Added GPU Octree Datastructure #20

Open jneus opened 2 years ago

jneus commented 2 years ago

This provides the functionality to create octrees for pasture's PointBuffer. The octrees are constructed on the GPU using wgpu as a wrapper around VULKAN.

As of now the implementation features octree construction and k-nearest-neighbor search around a given radius.

README provides details on several enhancements for the future, improving the current performance.

The performance right now has a bottleneck in the node partitioning inside the construction compute shader, because this is done linearly for the range of the given node, which is big for the first few iterations (in the first one it's the whole buffer).

That could be improved by sorting the the point indices by the morton codes of their points. Some information on this can be found here: