Skip to content

Conversation

@davepagurek
Copy link
Contributor

Resolves #8471

Changes

  • All drawBuffers calls are batched into a single render pass now, since it should be safe to do so as long as we still end the last render pass when we switch from drawing to framebuffers
  • We no longer draw all uniforms into a single buffer every frame:
    • I've split up uniforms into multiple chunks, so we can change behaviour on a per-chunk basis rather than all or nothing
    • For most chunks, we now cache the last bound buffer so that we don't have to rewrite it when the value doesn't change
    • Writing is still a bottleneck for chunks that update for basically every call. For those, we now write to a part of a big memory-mapped buffer. Right now I'm doing this for position-related data and also color (but not other material settings) since those feel most likely to be updated per object.

PR Checklist

@davepagurek davepagurek merged commit aa45dc1 into dev-2.0 Feb 7, 2026
5 checks passed
@davepagurek davepagurek deleted the webgpu-perf branch February 7, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant