Skip to content

CPU sort that enables WebGPU export #203

@WindyYam

Description

@WindyYam

Not a real issue, but rather some info on work.
I was originally try to proceed on the stochastic branch's work to investigate on sort-free implementation that would potentially work on WebGPU.
Well, at the end there's no a very good solution to the noise. Simply do subpixel sample would greatly affect performance.

We all know GPU radix sort is not supported yet on WebGPU, but right now sort is the only quality solution. So at the end I went back to alpha blend and CPU sort, at the end I came up with a solution:

  1. Use octree nodes to manage the scene splats
  2. Do culling through octree to filter out visible nodes
  3. Coarse sort the visible nodes
  4. In each node, sort the splats inside using CPU threads in parellel(since splats between nodes are isolated)
  5. Preserve the sort result in each node, so we only update the node sort result when camera position changes a bit threshold

I put it in my fork, hope it can help someone https://github.com/WindyYam/UnityGaussianSplatting
For anyone who want to try: https://windyyam.github.io/unity_splat_test_deploy/

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions