Skip to content

Replace full-screen quad composite with tile-based indirect draw in local compute GSplat renderer#8544

Merged
mvaligursky merged 1 commit intomainfrom
mv-gsplat-tile-composite
Mar 20, 2026
Merged

Replace full-screen quad composite with tile-based indirect draw in local compute GSplat renderer#8544
mvaligursky merged 1 commit intomainfrom
mv-gsplat-tile-composite

Conversation

@mvaligursky
Copy link
Copy Markdown
Contributor

@mvaligursky mvaligursky commented Mar 20, 2026

Replace the full-screen quad composite blit in the local compute GSplat renderer with a tile-based indirect draw that only composites non-empty tiles. This fixes a stale data bug where tiles with zero splats retained data from previous frames, and reduces fill rate proportional to empty screen area.

Changes:

  • Add GSplatTileComposite class that owns a bare mesh (no vertex/index buffers), a ShaderMaterial, and a MeshInstance configured for non-indexed indirect draw
  • Add gsplatTileCompositeVS WGSL vertex shader chunk that procedurally generates tile quads from pcVertexIndex and a rasterizeTileList storage buffer
  • Extend the classify compute shader to write DrawIndirectArgs for the tile composite alongside existing indirect dispatch args
  • Remove the old full-screen quad composite (_createCompositeMaterial, _createMeshInstance) from GSplatComputeLocalRenderer

Performance:

  • Saves fill rate proportional to empty screen area — only tiles containing splats are composited
  • No additional GPU passes — the classify shader already has rasterizeCount and writes draw args in the same thread-0 block
  • No vertex or index buffers needed — quads generated procedurally in the vertex shader

…w in local compute GSplat renderer

Replace the full-screen quad composite blit with a tile-based indirect
draw that only composites non-empty tiles. This fixes stale data on
tiles with zero splats and reduces fill rate proportional to empty
screen area.

Made-with: Cursor
@mvaligursky mvaligursky self-assigned this Mar 20, 2026
@mvaligursky mvaligursky added performance Relating to load times or frame rate area: graphics Graphics related issue labels Mar 20, 2026
@mvaligursky mvaligursky merged commit b15cc09 into main Mar 20, 2026
8 checks passed
@mvaligursky mvaligursky deleted the mv-gsplat-tile-composite branch March 20, 2026 15:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: graphics Graphics related issue performance Relating to load times or frame rate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant