Repository navigation
Update Babylon.js to 9.31.3 - #1958
Merged
bkaradzic-microsoft merged 7 commits intoOct 22, 2026
Merged
bkaradzic-microsoft merged 7 commits into
bkaradzic-microsoft merged 7 commits into
Conversation
Picks up BabylonJS/Babylon.js#19005 (NativeEngine rendering parity). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c1f8e152-c900-4b79-8de8-309df92cbceb
Contributor
There was a problem hiding this comment.
🔵 Needs a closer look
The dependency updates are consistent, but the upstream NativeEngine rendering changes need integration validation against Babylon Native before approval.
No open issues 🎉
1 file not reviewed
Apps/package-lock.json: Generated file
What changed in this PR
Updates Babylon.js from 9.29.0 to 9.31.3 across the applications and JavaScript unit tests to pick up upstream NativeEngine rendering parity improvements.
Changes:
- Updates eight runtime packages and four unit-test dependencies.
- Synchronizes Babylon.js versions, package URLs, and integrity hashes in the shared lockfile without unrelated dependency changes.
| File | Description |
|---|---|
| Apps/UnitTests/JavaScript/package.json | Updates Babylon.js test dependencies to 9.31.3. |
| Apps/package.json | Updates eight Babylon.js runtime dependencies to 9.31.3. |
| Apps/package-lock.json | Locks the updated packages and synchronizes workspace declarations. |
Review effort: Balanced
Babylon.js 9.31.3 includes BabylonJS/Babylon.js#19005 (NativeEngine rendering parity). Every test with excludeFromAutomaticTesting was run individually on Win32 D3D11 V8; the 176 that pass are enabled. Three motion blur instance tests regress on OpenGL with 9.31.3 (4.7-10.7% pixel diff on Ubuntu JSC), so they are excluded on OpenGL only. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c1f8e152-c900-4b79-8de8-309df92cbceb
…sitive tests - Exclude 74 newly enabled tests on OpenGL (Ubuntu JSC llvmpipe): unsupported MSAA render target formats, particle effect compile errors, llvmpipe crashes, pixel diffs, and a timeout. Each has a reason. - Run Win32 validation (GitHub and the Azure nightly) as two interleaved shards. Tests leak ~20 MB each, so one process for the whole suite reaches ~8 GB and crashes or hangs near the end. - Re-exclude 5 tests that pass in isolation but fail after other tests in the same process (329, 384, 436, 457, 601). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c1f8e152-c900-4b79-8de8-309df92cbceb
…watchdog - validation_native.js: cleanupAfterTest now restores the full StencilState defaults (mask, func, ref, func mask, ops). "cube-with-holes-using-stencil-buffer" set them directly on the engine and leaked them into later tests (457, 436). - config.json: re-enable 436 and 457 (OpenGL still excluded); refine the reasons for the remaining order-sensitive exclusions (329, 384, 601). - build-win32.yml: give each validation shard a 30 min timeout; on timeout, write a full dump (uploaded with crash dumps) and kill the process so a hang fails fast instead of running into the 180 min job timeout. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c1f8e152-c900-4b79-8de8-309df92cbceb
The Win32 V8 CI job hung because "IBL Voxel Shadowing" and its Left-Handed
variant remove the D3D11 device (DXGI_ERROR_DEVICE_REMOVED) on the WARP
software rasterizer of GPU-less runners. Every later test then failed its
readback ("operation canceled") until one waited forever. The hang dump
showed m_deviceLost = true with all threads idle.
- config.json: exclude the three IBL Voxel Shadowing tests on D3D11. They
pass on hardware D3D11 and on OpenGL.
- validation_native.js: once a framebuffer readback is canceled, report the
test that was running and stop the run with a failure instead of
continuing on a lost device.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: c1f8e152-c900-4b79-8de8-309df92cbceb
Like the voxel variants, both IBL Screen-space Shadowing tests remove the D3D11 device on the WARP rasterizer of GPU-less CI runners. The new readback-cancel abort reported them right away. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: c1f8e152-c900-4b79-8de8-309df92cbceb
Run the Win32 and nightly validation suites in one process again, as on master. Sharding worked around tests leaking memory (~8 GB by the end of the suite); that leak should be fixed rather than hidden in CI scripts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 60c2ec68-6de1-445d-9fc9-b699db737eae
bkaradzic-microsoft
force-pushed
the
deps/babylonjs-9.31.3
branch
from
October 22, 2026 21:07
6b61a68 to
a9d8860
Compare
bkaradzic-microsoft
enabled auto-merge (squash)
October 22, 2026 21:13
This was referenced Oct 23, 2026
Merged
Merged
This was referenced Oct 23, 2026
Closed
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.
Updates the Babylon.js npm packages from 9.29.0 to 9.31.3, the latest published version. This picks up BabylonJS/Babylon.js#19005 (
[Native] NativeEngine rendering parity).Apps/package.json: the eight runtimebabylonjs*packages.Apps/UnitTests/JavaScript/package.json:babylonjs,babylonjs-materials,@babylonjs/core,@babylonjs/materials.Apps/package-lock.json: regenerated withnpm install --package-lock-only. Only the Babylon.js entries change.No reference images change. Babylon.js changed none of the reference images or test entries BN uses between 9.29.0 and 9.31.3.
Validation tests
Apps/Playground/Scripts/config.jsonenables 173 of the 249 tests that hadexcludeFromAutomaticTesting, raising enabled tests from 471 to 644 (5 of them, theIBL Voxel/Screen-space Shadowingtests, are excluded on D3D11; see below). Each excluded test was run on its own on Win32 D3D11 V8, and the ones that passed are enabled.Enabled tests by previous exclusion reason:
ARRAY_BUFFERTypeErrorFLOATundefinedImage, cubemap load, texture formats, asset loads, FrameGraph hang, and others)3 tests pass on their own but fail pixel comparison when they run after other tests in the same process, so they stay excluded with an updated reason:
Order independent transparency(fails afterReverse depth buffer and CSM shadows),Command encoder order in WebGPU 1, andOpenPBR Thin Walled Subsurface Transmission Blending - IBL.Runner fix: reset stencil state between tests
cube-with-holes-using-stencil-buffersets the stencil function, mask, and operations directly on the engine.cleanupAfterTestinvalidation_native.jsonly calledsetStencilBuffer(false), so the rest leaked into later tests and broke bothFrameGraph (nrge) highlight layertests. Cleanup now restores the fullStencilStatedefaults, and those two tests are enabled.OpenGL exclusions
76 of the enabled tests fail on Ubuntu JSC (Mesa llvmpipe), so they get
"excludedGraphicsApis": ["OpenGL"]with a reason. They were checked one by one in an Ubuntu 24.04 environment that matches the CI runner.Error compiling effectLLVM ERROR: Cannot emit physreg copy instruction, SSAO)Win32 CI hang: device loss on WARP
The Win32 V8 job hung on GitHub's GPU-less runners, where D3D11 runs on the WARP software rasterizer. A hang dump showed
m_deviceLost = truewith every thread idle. TheIBL Voxel ShadowingandIBL Screen-space Shadowingtests remove the device (DXGI_ERROR_DEVICE_REMOVED) on that WARP. Every later test then failed its readback withoperation canceleduntil one waited forever. Locally, under WARP on Windows 11, these tests pass.config.json: the fiveIBL Voxel/Screen-space Shadowingtests are excluded on D3D11 only. They still run on OpenGL.validation_native.js: once a framebuffer readback is canceled, the runner reports the test that was running and stops the run with a failure, instead of continuing on a lost device.Local results: Win32 D3D11 V8 644/644, run as two processes (323/323 + 321/321; also the first half under WARP: 323/323); Ubuntu 24.04 JSC OpenGL 517/517.
In one process, test memory growth (~20 MB per test) reaches ~8 GB near the end of the Win32 suite. That is not addressed in this PR.