Skip to content

Remove fragile WebGL mipmap-based radix sort#8949

Merged
mvaligursky merged 1 commit into
mainfrom
mv-remove-mipmap-radix-sort
Jun 23, 2026
Merged

Remove fragile WebGL mipmap-based radix sort#8949
mvaligursky merged 1 commit into
mainfrom
mv-remove-mipmap-radix-sort

Conversation

@mvaligursky

Copy link
Copy Markdown
Contributor

Removes the experimental mipmap-prefix-sum GPU radix sort (FramePassRadixSort) and its example. This approach relied on a hardware-mipmap prefix-sum trick that is fragile and fails on many devices. It was never wired into the gsplat rendering path — gsplat continues to use the CPU worker sort on WebGL and the well-tested WebGPU compute radix sort (direct + indirect) on WebGPU, both of which are unaffected.

Changes:

  • Remove FramePassRadixSort and its render passes (RenderPassRadixSortCount, RenderPassRadixSortReorder)
  • Remove the associated GLSL and WGSL radix-sort-count / radix-sort-count-quad / radix-sort-reorder shader chunks
  • Remove the FramePassRadixSort export from the public index

Kept:

  • WebGPU compute radix sort (ComputeRadixSort: multipass + onesweep) and its compute shader chunks
  • PrefixSumKernel (shared by the compute sort and gsplat interval compaction)
  • The radix-sort-compute and radix-sort-indirect-compute examples

Examples:

  • Remove the hidden test/radix-sort example (the only consumer of the removed render pass)

Note: FramePassRadixSort was @ignore, so this is not a public-API breaking change.

Removes the experimental mipmap-prefix-sum GPU radix sort (FramePassRadixSort),
its render passes, the associated GLSL/WGSL shader chunks, and the hidden test
example. The approach relied on a hardware-mipmap prefix-sum trick that is
fragile and fails on many devices, and was never wired into the gsplat
rendering path. The WebGPU compute radix sort and the WebGL CPU worker sort are
unaffected.
@github-actions

Copy link
Copy Markdown

Build size report

This PR changes the size of the minified bundles.

Bundle Minified Gzip Brotli
playcanvas.min.js 2260.9 KB (−22.2 KB, −0.97%) 581.6 KB (−4.0 KB, −0.68%) 451.9 KB (−3.5 KB, −0.76%)
playcanvas.min.mjs 2258.3 KB (−22.2 KB, −0.97%) 580.7 KB (−4.1 KB, −0.71%) 451.8 KB (−3.1 KB, −0.68%)

@mvaligursky mvaligursky merged commit b34b259 into main Jun 23, 2026
10 checks passed
@mvaligursky mvaligursky deleted the mv-remove-mipmap-radix-sort branch June 23, 2026 10:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: graphics Graphics related issue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant