Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: playcanvas/engine
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.19.4
Choose a base ref
...
head repository: playcanvas/engine
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.19.5
Choose a head ref
  • 3 commits
  • 6 files changed
  • 3 contributors

Commits on Jun 4, 2026

  1. fix(gsplat): tile interval-scatter dispatch over workgroup limit (#8841)

    The interval-compaction scatter pass dispatched one workgroup per visible
    interval as a 1D dispatch, assuming the interval count stays below the device's
    max workgroups per dimension (65535). Large GPU-sorted scenes (e.g. many gsplat
    instances across the full LOD range) exceed that limit and trigger a WebGPU
    GPUValidationError.
    
    Tile the scatter dispatch across X and Y via Compute.calcDispatchSize and
    reconstruct the linear interval index in the shader from the 2D workgroup id.
    The existing numIntervals bounds check discards over-dispatched workgroups.
    Behavior is unchanged for scenes under the limit and for the CPU-sort path.
    
    Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>
    mvaligursky and Martin Valigursky committed Jun 4, 2026
    Configuration menu
    Copy the full SHA
    d8f1eb3 View commit details
    Browse the repository at this point in the history
  2. fix(scripts): register nameless scripts under their verbatim class na…

    …me (#8844)
    
    #8831 (2.19.3) changed the name a script is registered under when no
    explicit name is passed to `registerScript(Class)` - from the verbatim
    class name (e.g. `PlayerController`) to the lowerCamelCase form
    (`playerController`). Projects that register ES6 classes this way and
    reference them by their class name then failed to resolve the script, so
    it never attached.
    
    Restore the pre-2.19.3 behaviour: `registerScript` falls back to the
    verbatim class name (still honouring an explicit name, an own `__name`, or
    an own `scriptName`). Resolution stays own-property only, so #8831's
    subclass-collision and ESM `scriptName`-field fixes are preserved.
    
    `ScriptComponent.create`, `ScriptRegistry.add` and the asset loader keep
    using the lowerCamelCase `getScriptRegistryName`, so the editor and asset
    pipeline (which always pass an explicit name) are unaffected - the change
    is scoped to code-driven nameless `registerScript(Class)` calls.
    
    Co-authored-by: Martin Valigursky <mvaligursky@snapchat.com>
    Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
    3 people committed Jun 4, 2026
    Configuration menu
    Copy the full SHA
    7570fb6 View commit details
    Browse the repository at this point in the history
  3. 2.19.5

    Martin Valigursky committed Jun 4, 2026
    Configuration menu
    Copy the full SHA
    96df0a6 View commit details
    Browse the repository at this point in the history
Loading