Skip to content

Playground: re-enable 16 validation tests passing on D3D11 + OpenGL#1744

Merged
bkaradzic-microsoft merged 4 commits into
BabylonJS:masterfrom
bkaradzic-microsoft:weekend/reenable-validation-tests
Jun 10, 2026
Merged

Playground: re-enable 16 validation tests passing on D3D11 + OpenGL#1744
bkaradzic-microsoft merged 4 commits into
BabylonJS:masterfrom
bkaradzic-microsoft:weekend/reenable-validation-tests

Conversation

@bkaradzic-microsoft

Copy link
Copy Markdown
Member

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.js tests in Apps/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):

  • Win32 D3D11: ran=289 passed=289 failed=0 (was 273)
  • OpenGL (ANGLE): ran=280 passed=280 failed=0

Stencil/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

  • 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 - Analytic Lights
  • OpenPBR Thin Film Thickness VS IOR - Analytic Lights
  • OpenPBR Thin Film and Specular Weight - Analytic Lights
  • OpenPBR Thin Film and Specular Weight Metals - Analytic Lights
  • WebGPU async pipeline pre-warming

Notes

Validated locally on Win32 D3D11 and OpenGL only; Metal/iOS not validated locally — worth watching Mac CI.

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>
Copilot AI review requested due to automatic review settings June 9, 2026 22:55

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.json by removing excludeFromAutomaticTesting and associated reason fields.
  • Adjusted affected JSON entries to keep correct trailing-comma syntax after removing fields.

bkaradzic and others added 3 commits June 9, 2026 16:41
…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>
@bkaradzic-microsoft bkaradzic-microsoft merged commit e1f3c3f into BabylonJS:master Jun 10, 2026
28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants