[BREAKING] Move gsplat lodRangeMin/lodRangeMax to GSplatComponent#8908
Merged
Conversation
Move the LOD range limits off the global Scene#gsplat (GSplatParams) onto the per-GSplatComponent, since the valid LOD range is asset-specific. The global GSplatParams#lodRangeMin/lodRangeMax become deprecated warn-once no-ops. Updates examples and the streamed-gsplat script accordingly.
Public API reportThis PR changes the public API surface (+4 / −4), per the docs' rules (@ignore / @Private / undocumented are excluded). Show API diff+GSplatComponent.get lodRangeMax(): number
+GSplatComponent.get lodRangeMin(): number
+GSplatComponent.set lodRangeMax(value: number)
+GSplatComponent.set lodRangeMin(value: number)
-GSplatParams.get lodRangeMax(): number
-GSplatParams.get lodRangeMin(): number
-GSplatParams.set lodRangeMax(value: number)
-GSplatParams.set lodRangeMin(value: number)Informational only — this never fails the build. |
3 tasks
willeastcott
added a commit
that referenced
this pull request
Jun 26, 2026
…8968) lodRangeMin and lodRangeMax were added to GSplatComponent in #8908 but never added to the component system's _properties list. As a result they were silently ignored when passed to addComponent() and dropped when a gsplat component was cloned (reset to their defaults of 0 / 99). Add them alongside the sibling lodBaseDistance/lodMultiplier properties. Also adds a GSplatComponent test covering init-from-data and clone, and simplifies the splat-portal and world examples to pass their static LOD values directly to addComponent. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
willeastcott
added a commit
that referenced
this pull request
Jun 26, 2026
…8968) lodRangeMin and lodRangeMax were added to GSplatComponent in #8908 but never added to the component system's _properties list. As a result they were silently ignored when passed to addComponent() and dropped when a gsplat component was cloned (reset to their defaults of 0 / 99). Add them alongside the sibling lodBaseDistance/lodMultiplier properties. Also adds a GSplatComponent test covering init-from-data and clone, and simplifies the splat-portal and world examples to pass their static LOD values directly to addComponent. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
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.
Moves
lodRangeMin/lodRangeMaxoff the globalScene#gsplat(GSplatParams) onto the per-GSplatComponent, since the valid LOD range is asset-specific (depends on each asset'soctree.lodLevels). The budget balancer already operated on per-instance ranges, so this just changes where the values originate.Changes:
lodRangeMin(default 0) andlodRangeMax(default 99) toGSplatComponent; the values flow throughGSplatPlacementto the octree instance and are clamped to the asset's valid LOD range at use.GSplatParams#lodRangeMin/GSplatParams#lodRangeMaxas warn-once no-ops.streamed-gsplatscript to set the range per component.API Changes (breaking):
app.scene.gsplat.lodRangeMin/lodRangeMaxare now deprecated no-ops (warn once). Use the component instead:Before:
After:
GSplatComponent#lodRangeMin(default 0) andGSplatComponent#lodRangeMax(default 99). Note the max default is now 99 (effectively "no cap", clamped to the asset's max LOD), versus the old global default of 10.Examples: