Playground: re-enable 16 validation tests passing on D3D11 + OpenGL#1744
Merged
bkaradzic-microsoft merged 4 commits intoJun 10, 2026
Conversation
Each test was verified to pass both in isolation and in the full validation_native.js sweep on Win32 D3D11 and OpenGL after the latest master (incl. BabylonJS#1739 divisor-driven instancing and BabylonJS#1652 thread-model rework). Stencil/scissor state-leak cascade causers were intentionally left excluded. Re-enabled: Area Lights - Standard Material, Area Lights - PBR, GLTF Node visibility test, Export GLTF Extension KHR_texture_transform, simple-render-target-with-blue-spheres, pillars-sphere-and-torus-with-PCSS-shadows, torus-knot-mirror, simple-sphere-in-4-mirrors, procedural-texture-with-node-material, simple-custom-shader, change-texture-of-material, OpenPBR Thin Film Weight VS IOR / Thickness VS IOR / and Specular Weight / and Specular Weight Metals - Analytic Lights, WebGPU async pipeline pre-warming. D3D11: ran=289 passed=289 failed=0; OpenGL: ran=280 passed=280 failed=0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Re-enables a set of previously-disabled Babylon Native Playground validation cases that now render and pixel-compare correctly after recent engine changes, increasing automatic test coverage without modifying runtime code.
Changes:
- Re-enabled 16 tests in
Apps/Playground/Scripts/config.jsonby removingexcludeFromAutomaticTestingand associatedreasonfields. - Adjusted affected JSON entries to keep correct trailing-comma syntax after removing fields.
bghgary
approved these changes
Jun 9, 2026
…encil test, re-exclude Area Lights on Linux The validation harness reuses one engine across all tests but only reset hardware scaling and effects between them. A test leaving the stencil test enabled or a scissor rect set corrupted later tests (e.g. the glow-layer test failed with 235275 px diff after the stencil test). Reset both in the per-test cleanup via engine.setStencilBuffer(false) + engine.disableScissor(). Note JS-side wipeCaches/StencilState.reset do not clear the native stencil state; only setStencilBuffer(false) emits the disable command. With the leak fixed, re-enable cube-with-holes-using-stencil-buffer. Re-exclude Area Lights - Standard Material / PBR: they render black on Linux desktop OpenGL (area-light LTC path unsupported) though they pass on Win32 D3D11 and Windows ANGLE GL. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
These 4 thin-film tests render the material as background on Linux desktop OpenGL (28798 px diff) though they pass on Win32 D3D11 and Windows ANGLE GL. Confirmed via CI: all other newly-enabled tests (incl. the stencil test and its glow-layer cascade victim) pass on Linux. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ully Area Lights and OpenPBR Thin Film Analytic Lights tests fail only on Linux desktop OpenGL but pass on Win32 D3D11/D3D12. Use excludedGraphicsApis ["OpenGL"] so they keep providing coverage on the backends where they work rather than being skipped everywhere. Also enable the previously fully-excluded "Scissor test with 0.9 hardware scaling" on D3D11 (its state-leak cascade is now fixed); it remains OpenGL-excluded for the separate Linux pixel-diff. All 8 affected tests pass on D3D11 (ran=8 passed=8). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.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.
Problem
After syncing to the latest master (which includes #1739 divisor-driven per-instance vertex attributes and the #1652 thread-model rework), a number of previously-excluded Playground validation tests now render correctly. They were left disabled because they used to crash/hang or pixel-diff against their references on Babylon Native.
Change
Re-enable 16
validation_native.jstests inApps/Playground/Scripts/config.json. No code changes.Verification
Each candidate was first confirmed passing in isolation on both backends, then the full sweep was re-run on both to ensure no order-dependent state-leak cascade (the runner aborts the whole sweep on the first hard failure):
ran=289 passed=289 failed=0(was 273)ran=280 passed=280 failed=0Stencil/scissor tests that pass in isolation but leak GPU state into a later test (
cube-with-holes-using-stencil-buffer,Scissor test with 0.9 hardware scaling) were intentionally kept excluded to avoid reintroducing a cascade.Re-enabled tests
Notes
Validated locally on Win32 D3D11 and OpenGL only; Metal/iOS not validated locally — worth watching Mac CI.