docs: track Web Components 0.22.0 — engine 2.22.0 and budgeted splat LOD - #1177
Merged
Conversation
0.20.0 and 0.21.0 were already documented (#1167, #1172, #1174, #1175), so this is the 0.21.0 -> 0.22.0 delta, which is one library commit with user-facing effect: the update for Engine 2.22 compatibility (#458). The engine pin moves from 2.21.4 to 2.22.0. That is ENGINE_VERSION in LiveExample/shell.js and the camera-controls helper URL inside the seven fences that load it, in both locales - fourteen files, one URL form before and after, confirmed served by jsDelivr before anything was edited. PWC_VERSION moves to 0.22.0. Gaussian splat LOD is no longer a per-splat distance schedule. Engine 2.22 chooses LOD levels globally against a scene-wide splat budget, so pc-gsplat loses lod-base-distance and lod-multiplier and gains lod-falloff (an exponent, 0 to 8, default 1), while pc-scene gains gsplat-splat-budget (default 1,000,000) and gsplat-lod-mode (error or distance). The two pages could each just grow or lose table rows, but a reader would then have to work out for themselves why the knob that sets the budget lives on the scene and the knob that spends it lives on the splat, so pc-gsplat gains a Level of Detail section that lays the split out in one table with a combined example. Two facts in it come from the engine's GSplatParams documentation rather than the library's: a budget larger than the scene resolves every node at its finest level, and there is no way to switch budgeted selection off - a non-positive budget warns and keeps the default rather than lifting the cap. The section also says what none of this touches: a plain .ply, .sog or .splat with no LOD levels always renders in full. The removed attributes appeared only in the two pc-gsplat table rows; no fence used them. The Japanese pages mirror every change, and the pc-scene rows in both locales cross-link the new section. Verification, all at the new pins: - The gsplat, scene, collision, rigid-body and screen tables were audited against observedAttributes and the elements' cached defaults by script, not by eye; names and defaults match. - 31/31 tags resolve against the library's golden list; 31 fences are byte-identical en/ja apart from translated comments, with a single engine URL form; lint is clean over 1344 files; the build is clean for en and ja, so the new level-of-detail anchor resolves in both. - All 31 live examples boot at engine 2.22.0 / library 0.22.0. The one report was the documented cold-start artifact - the first page a fresh Chrome loads loses its jsDelivr fetch at any pin - and the same URL passed on the thirteen other pages that use it. - Rendering was checked across the engine bump, because a console-clean example can still look wrong: pc-render and pc-light are pixel- identical at 2.21.4 and 2.22.0, pc-model is acne-free at both, and pc-gsplat - the page whose engine internals actually changed - draws 183,913 non-clear pixels (23.5% of the frame) at both pins with an empty console. The scene's gsplat parameters were also observed wired through with the attributes absent: lodMode error and splatBudget 1,000,000 at 2.22.0, against a bare splatBudget of 0 at 2.21.4. Worth recording: the first splat probe came back blank at both pins and looked like a regression. It was the cold-start fetch failure taking the local .sog down along with the helper script, since a single-page probe in a fresh Chrome is always the first page. A warm-up load before the measured one fixed the probe; nothing in the release needed fixing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The Level of Detail section said a streamed splat is exported "alongside a .lod-meta.json". Both halves were wrong. The engine's octree parser matches on the basename being exactly lod-meta.json - a plain filename, not a dotfile and not an extension - and the Splat Streaming example points its pc-asset src straight at .../v1/lod-meta.json. So the file is what the asset IS, not a sidecar beside it; the splat data then streams in on demand. The leading dot came from the library's JSDoc, which spells it .lod-meta.json in the same style as .ply and .sog, and was copied without checking. Corrected in both locales. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The version pin bump and the accompanying en/ja documentation updates for budget-based splat LOD appear consistent and complete within the changed files.
Pull request overview
Updates the PlayCanvas Developer Site’s Web Components documentation and embedded live examples to track @playcanvas/web-components 0.22.0 and PlayCanvas Engine 2.22.0, and documents the new budget-based Gaussian splat LOD behavior introduced with the engine compatibility bump.
Changes:
- Bump the shared LiveExample pins to Engine
2.22.0and Web Components0.22.0. - Update
camera-controls.mjshelper script URLs in the affected live-example fences to the new engine pin (en + ja). - Document the new Gaussian splat LOD controls: add
gsplat-*attributes to<pc-scene>, replace<pc-gsplat>distance-threshold attributes withlod-falloff, and add a dedicated “Level of Detail” section (en + ja).
File summaries
| File | Description |
|---|---|
| src/components/LiveExample/shell.js | Bumps global pins for all embedded live examples (Engine + Web Components). |
| docs/user-manual/web-components/tags/pc-sky.md | Updates helper script URL in the live example to Engine 2.22.0. |
| docs/user-manual/web-components/tags/pc-scene.md | Documents new scene-level Gaussian splat LOD/budget attributes. |
| docs/user-manual/web-components/tags/pc-node.md | Updates helper script URL in the live example to Engine 2.22.0. |
| docs/user-manual/web-components/tags/pc-model.md | Updates helper script URL in the live example to Engine 2.22.0. |
| docs/user-manual/web-components/tags/pc-gsplat.md | Replaces removed LOD attributes, adds budget-based LOD documentation, updates helper script URL. |
| docs/user-manual/web-components/tags/pc-asset.md | Updates helper script URL in the live example to Engine 2.22.0. |
| docs/user-manual/web-components/tags/pc-anim.md | Updates helper script URL in the live example to Engine 2.22.0. |
| docs/user-manual/web-components/tags/pc-anim-clip.md | Updates helper script URL in the live example to Engine 2.22.0. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-sky.md | JA mirror: updates helper script URL in the live example to Engine 2.22.0. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-scene.md | JA mirror: documents new scene-level Gaussian splat LOD/budget attributes. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-node.md | JA mirror: updates helper script URL in the live example to Engine 2.22.0. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-model.md | JA mirror: updates helper script URL in the live example to Engine 2.22.0. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-gsplat.md | JA mirror: replaces removed LOD attributes, adds budget-based LOD documentation, updates helper script URL. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-asset.md | JA mirror: updates helper script URL in the live example to Engine 2.22.0. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-anim.md | JA mirror: updates helper script URL in the live example to Engine 2.22.0. |
| i18n/ja/docusaurus-plugin-content-docs/current/user-manual/web-components/tags/pc-anim-clip.md | JA mirror: updates helper script URL in the live example to Engine 2.22.0. |
Review details
- Files reviewed: 17/17 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
Tracks library 0.22.0. 0.20.0 and 0.21.0 were already documented (#1167, #1172, #1174, #1175), so this is the 0.21.0 → 0.22.0 delta — effectively one library commit with user-facing effect, the Engine 2.22 compatibility update.
Engine pin → 2.22.0
ENGINE_VERSIONinLiveExample/shell.js, plus thecamera-controls.mjshelper URL inside the seven fences that load it, in both locales — 14 files, a single URL form before and after. Confirmed served by jsDelivr at the new pin before editing.PWC_VERSION→ 0.22.0.Splat LOD is now budgeted
Engine 2.22 stops choosing Gaussian splat LOD per splat by distance thresholds and instead chooses globally against a scene-wide splat budget. So:
<pc-gsplat>lod-base-distance,lod-multiplierlod-falloff(exponent 0–8, default 1)<pc-scene>gsplat-splat-budget(default 1,000,000),gsplat-lod-mode(error/distance)Rather than just moving table rows,
pc-gsplatgains a Level of Detail section that lays out the split — the knob that sets the budget lives on the scene, the knobs that spend it live on the splat — in one table with a combined example. Two facts in it come from the engine's ownGSplatParamsdocs: a budget larger than the scene resolves every node at its finest level, and there is no off switch — a non-positive budget warns and keeps the default rather than lifting the cap. It also says what none of this touches: a plain.ply,.sogor.splatwith no LOD levels always renders in full.The removed attributes appeared only in the two
pc-gsplattable rows — no fence used them. Japanese pages mirror everything, and thepc-scenerows in both locales cross-link the new section.Verification
All at the new pins:
observedAttributesand cached defaults. Names and defaults match.TAGSlist; 31 fences byte-identical en/ja apart from translated comments; single engine URL form;npm run lintclean over 1344 files;npm run buildclean for en + ja (so the new#level-of-detailanchor resolves in both).pc-render,pc-lightpc-modelpc-gsplatThe
pc-gsplatrow is the one that matters — it is the page whose engine internals actually changed. The scene's gsplat parameters were also observed wired through with the attributes absent:lodMode: "error",splatBudget: 1000000at 2.22.0, against a baresplatBudget: 0at 2.21.4.For the reviewer
lod-base-distance/lod-multiplierin their markup gets no warning on 0.22.0 — an unknown attribute is simply ignored — so their LOD tuning silently disappears. Per the pre-1.0 convention the manual describes current behavior only and does not call this out as a change; the new section is where an upgrading reader lands. Say the word if you would rather have an explicit migration note..sogdown along with the helper script, because a single-page probe in a fresh Chrome is always the first page. A warm-up load before the measured one fixed the probe; nothing in the release needed fixing. Recorded in my notes so the next engine bump does not rediscover it.Fixes #
I confirm I have read the contributing guidelines.
🤖 Generated with Claude Code