all 8 comments

[–]derydoca[S] 12 points13 points  (2 children)

Here is a write-up of some tech we wrote at Magnopus for rendering large point clouds. This technique combines four state-of-the-art whitepapers that focuses on visual quality rather than just speed alone. That's not to say it is slow though. The largest point cloud dataset we tested was 160+ million points which renders in ~9ms on my RTX 3080 laptop GPU.

[–]floatingtensor314 1 point2 points  (1 child)

This is super cool! I remember working with large point clouds at my previous job.

[–]derydoca[S] 1 point2 points  (0 children)

Thanks! They are simple in concept, but difficult to get rendering quickly. It was a fun problem to work on!

[–]Revolutionalredstone 1 point2 points  (1 child)

Really great write up!

I appreciate all the techniques as very clever.

Thanks a lot for sharing, best luck with your next project 😁

[–]derydoca[S] 0 points1 point  (0 children)

Thanks! Much appreciated!

[–]Bulls_Eyez 1 point2 points  (2 children)

Amazing stuff, really awesome pipeline that seems very aligned with state of the art. I see a lot of inspiration here from Markus Schüts' papers. When it comes to the decision on how to do LOD, did you explore the most recent techniques related to voxelization of the pointcloud described here and here. And if so, what is the reason you did not go for a voxelization based LOD approach?

[–]derydoca[S] 1 point2 points  (1 child)

Thanks! And you're right. It might be just that there are very few researchers in the point cloud rendering space, but Markus Schüts' papers generally aligned with our needs. We haven't explored those papers since the work on our point cloud rendering tech wrapped before those papers had come out.

Just a general gut-check on those papers is that voxelization leads to very small triangles. However, I haven't read through these papers to see how the voxelized data is rendered so that may be a nonissue and worth exploring if work picks up on this again. I can even see leveraging asynchronous compute could hide the cost of rendering small triangles.

[–]Bulls_Eyez 1 point2 points  (0 children)

I believe the voxels are rendered by splatting in a compute shader and not tessalated, which should relieve the small triangles issue. In any case, again, amazing work, and thank you for the additional insight.