Skip to content

Conversation

@mvaligursky
Copy link
Contributor

@mvaligursky mvaligursky commented Jan 23, 2026

Fixes two related issues with unified gsplat work buffer extra streams:

1. Octree parent placement delegation

Octree file placements now properly inherit shader configuration from the component's placement, enabling them to write to work buffer extra streams:

  • workBufferModifier - delegated via getter (allows writing to extra streams)
  • parameters - inherited in constructor (e.g., component ID uniforms)
  • streams (instance textures) - delegated via getter

This allows octree splats to use per-component parameters and modifiers when writing to work buffer extra streams

2. Color-only shader compilation fix

When camera movement triggers a color-only update (spherical harmonics recalculation), the work buffer shader now generates no-op stub functions for extra stream writes. This prevents shader compilation errors when the user's workBufferModifier calls functions like writeSplatComponentId() that don't have render targets in color-only mode.

Copy link
Contributor

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 fixes two issues with unified gsplat work buffer extra streams:

Changes:

  • Added parent placement delegation for octree file placements to inherit shader configuration (workBufferModifier and instance streams)
  • Implemented no-op stub generation for extra stream write functions in color-only mode to prevent shader compilation errors

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/scene/shader-lib/wgsl/chunks/gsplat/vert/gsplatStreamOutput.js Added {defineGuard} placeholder to enable conditional compilation of stream output
src/scene/shader-lib/glsl/chunks/gsplat/vert/gsplatStreamOutput.js Added {defineGuard} placeholder to enable conditional compilation of stream output
src/scene/gsplat/gsplat-format.js Added getOutputStubs method to generate no-op stub functions for streams
src/scene/gsplat/gsplat-resource-base.js Modified to generate stub functions for extra streams in color-only mode
src/scene/gsplat-unified/gsplat-placement.js Added parent placement support with delegation for workBufferModifier and streams getters
src/scene/gsplat-unified/gsplat-octree-instance.js Updated file placement creation to pass parent placement reference
src/scene/gsplat-unified/gsplat-info.js Changed instanceStreams from property to getInstanceStreams getter function for live retrieval
src/scene/gsplat-unified/gsplat-work-buffer-render-pass.js Updated to use getInstanceStreams function for live stream access

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

@mvaligursky mvaligursky requested a review from slimbuck January 23, 2026 13:19
@mvaligursky mvaligursky merged commit 4601283 into main Jan 23, 2026
13 checks passed
@mvaligursky mvaligursky deleted the mv-octree-and-worbuffer-extra-streams branch January 23, 2026 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: graphics Graphics related issue enhancement Request for a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants