fix: Prevent setLayout from corrupting interval compaction data#8485
Merged
mvaligursky merged 1 commit intomainfrom Feb 26, 2026
Merged
fix: Prevent setLayout from corrupting interval compaction data#8485mvaligursky merged 1 commit intomainfrom
mvaligursky merged 1 commit intomainfrom
Conversation
setLayout synthesized a full-range interval [0, activeSplats) directly into this.intervals when no intervals existed (fully-loaded octree). This mutation leaked into GSplatIntervalCompaction.uploadIntervals, which saw intervals.length > 0 and fell into the wrong branch — mapping all splats to a single boundsIndex and losing per-node culling granularity. The result was incorrect GPU frustum culling when all octree nodes were loaded. Move the synthesis into updateSubDraws as a local variable so this.intervals is never mutated and the interval compaction correctly falls back to placementIntervals for per-node bounds mapping. Fixes regression from #8480. Made-with: Cursor
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
setLayoutmutatedthis.intervalsby synthesizing a full-range interval, causinguploadIntervalsin the GPU interval compaction to map all splats to a single bounds entry and lose per-node culling granularityupdateSubDrawsas a local variable sothis.intervalsis never mutated and the compaction correctly falls back toplacementIntervalsfor per-node bounds mapping