Skip to content

Consolidate z_hist into a single buffer#415

Merged
mkeeter merged 1 commit into
mainfrom
consolidate-z-hist
May 26, 2026
Merged

Consolidate z_hist into a single buffer#415
mkeeter merged 1 commit into
mainfrom
consolidate-z-hist

Conversation

@mkeeter
Copy link
Copy Markdown
Owner

@mkeeter mkeeter commented May 26, 2026

This frees up a buffer binding in the clear.wgsl pass, so we can add an additional storage buffer for variables.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR consolidates the per-tile Z histogram buffers into a single storage buffer, reducing bind group pressure in the clear.wgsl compute pass and freeing a binding for future storage-buffer needs.

Changes:

  • Removed z_hist from TileBuffers and introduced a unified Buffers::z_hist_buf with explicit padding for binding-offset alignment.
  • Updated bind groups to bind the appropriate z_hist_buf sub-slices for the 16³ and 4³ sorting/interval passes.
  • Updated the clear shader/bindings to clear histogram counters via the consolidated buffer.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
fidget-wgpu/src/voxel.rs Removes per-tile histogram buffers, adds a consolidated histogram buffer, and updates bind groups to use buffer slices.
fidget-wgpu/src/shaders/clear.wgsl Updates bindings and clearing logic to use the consolidated histogram buffer.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread fidget-wgpu/src/voxel.rs
Comment thread fidget-wgpu/src/voxel.rs Outdated
Comment thread fidget-wgpu/src/voxel.rs Outdated
Comment thread fidget-wgpu/src/voxel.rs
Comment on lines 1715 to +1731
fn sort16(&self, ctx: &Context, buffers: &Buffers) -> &wgpu::BindGroup {
self.sort16
.get_or_init(|| Self::sort_bind_group(ctx, &buffers.tile16))
self.sort16.get_or_init(|| {
Self::sort_bind_group(
ctx,
&buffers.tile16,
buffers.z_hist_buf.slice(0..16).into(),
)
})
}

fn sort4(&self, ctx: &Context, buffers: &Buffers) -> &wgpu::BindGroup {
self.sort4
.get_or_init(|| Self::sort_bind_group(ctx, &buffers.tile4))
self.sort4.get_or_init(|| {
Self::sort_bind_group(
ctx,
&buffers.tile4,
buffers.z_hist_buf.slice(256..320).into(),
)
Comment on lines +3 to +5
@group(1) @binding(2) var<storage, read_write> tile4_count: array<u32, 4>;
@group(1) @binding(3) var<storage, read_write> tile4_sort: array<u32, 4>;
@group(1) @binding(4) var<storage, read_write> zhist_buf: array<u32, 80>;
@mkeeter mkeeter force-pushed the consolidate-z-hist branch from 7a2309e to b192c65 Compare May 26, 2026 00:39
@mkeeter mkeeter enabled auto-merge (squash) May 26, 2026 00:39
@mkeeter mkeeter merged commit b8fd284 into main May 26, 2026
13 checks passed
@mkeeter mkeeter deleted the consolidate-z-hist branch May 26, 2026 00:41
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.

2 participants