Fixes for skinning and morph targets#11
Merged
Merged
Conversation
syntheticmagus
approved these changes
Jun 27, 2019
Merged
docEdub
added a commit
to docEdub/BabylonNative
that referenced
this pull request
Oct 4, 2023
…abylonJS#11) The WinRT file API does not resolve symlinks when used in Win32 apps. This change replaces the WinRT file API with calls to C++ STL fstream functions which does resolve symlinks on Win32 builds.
docEdub
added a commit
to SergioRZMasson/BabylonNative
that referenced
this pull request
Oct 5, 2023
…esolve-symlinks Resolve symlinks when loading app:/// and file:/// URLs on Windows (BabylonJS#11)
bkaradzic-microsoft
pushed a commit
to bkaradzic-microsoft/BabylonNative
that referenced
this pull request
May 15, 2026
Picks up BabylonJS/SPIRV-Cross#11 which un-guards the final HLSL stubs that Babylon Native's shader compiler still tripped on after BabylonJS#10: - OpSNegate - OpVectorTimesMatrix (two sites) - OpVectorExtractDynamic - to_extract_constant_composite_expression() helper These were the only remaining SPIRV-Cross WEBMIN stubs reachable by Babylon Native's HLSL transpile path on D3D11. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bkaradzic-microsoft
pushed a commit
to bkaradzic-microsoft/BabylonNative
that referenced
this pull request
May 15, 2026
…S#11 These previously-excluded tests now pass cleanly on Win32 D3D11 Release after the SPIRV-Cross bump in this PR un-guarded OpSNegate, OpVectorTimesMatrix, OpVectorExtractDynamic, and the to_extract_constant_composite_expression helper: idx 293 Prepass SSAO + sprites idx 296 Prepass SSAO + line edges renderer idx 299 Prepass SSAO + GUI idx 309 Prepass MBlur + Lens idx 321 Thin instances + dynamic buffer resize idx 322 Instances + render self motion blur idx 323 Thin instances + render self motion blur idx 558 OpenPBR Fuzz Weight vs Fuzz Roughness - Analytic Lights idx 559 OpenPBR Fuzz Weight vs Coat Weight with Normal Maps - Analytic Lights idx 574 OpenPBR Transmission Dispersion VS IOR - Analytic Lights Each had `excludeFromAutomaticTesting: true` with reason "Test crashes or hangs on Babylon Native". The crash/hang was the SPIRV-Cross `SPIRV_CROSS_INVALID_CALL()` stub for `OpSNegate` (idx 293/296/299/309/ 321/322/323) or for `OpVectorTimesMatrix` / OpenPBR analytic-lights codegen (idx 558/559/574); with the bump in this PR removing those WEBMIN guards, the shaders compile and the tests render within the default 2.5% errorRatio tolerance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bkaradzic-microsoft
pushed a commit
to bkaradzic-microsoft/BabylonNative
that referenced
this pull request
May 15, 2026
Picks up BabylonJS/SPIRV-Cross#11 which un-guards the final HLSL stubs that Babylon Native's shader compiler still tripped on after BabylonJS#10: - OpSNegate - OpVectorTimesMatrix (two sites) - OpVectorExtractDynamic - to_extract_constant_composite_expression() helper These were the only remaining SPIRV-Cross WEBMIN stubs reachable by Babylon Native's HLSL transpile path on D3D11. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bkaradzic-microsoft
pushed a commit
to bkaradzic-microsoft/BabylonNative
that referenced
this pull request
May 15, 2026
…S#11 These previously-excluded tests now pass cleanly on Win32 D3D11 Release after the SPIRV-Cross bump in this PR un-guarded OpSNegate, OpVectorTimesMatrix, OpVectorExtractDynamic, and the to_extract_constant_composite_expression helper: idx 293 Prepass SSAO + sprites idx 296 Prepass SSAO + line edges renderer idx 299 Prepass SSAO + GUI idx 309 Prepass MBlur + Lens idx 321 Thin instances + dynamic buffer resize idx 322 Instances + render self motion blur idx 323 Thin instances + render self motion blur idx 558 OpenPBR Fuzz Weight vs Fuzz Roughness - Analytic Lights idx 559 OpenPBR Fuzz Weight vs Coat Weight with Normal Maps - Analytic Lights idx 574 OpenPBR Transmission Dispersion VS IOR - Analytic Lights Each had `excludeFromAutomaticTesting: true` with reason "Test crashes or hangs on Babylon Native". The crash/hang was the SPIRV-Cross `SPIRV_CROSS_INVALID_CALL()` stub for `OpSNegate` (idx 293/296/299/309/ 321/322/323) or for `OpVectorTimesMatrix` / OpenPBR analytic-lights codegen (idx 558/559/574); with the bump in this PR removing those WEBMIN guards, the shaders compile and the tests render within the default 2.5% errorRatio tolerance. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bkaradzic-microsoft
added a commit
that referenced
this pull request
May 15, 2026
## Summary Bumps `BabylonJS/SPIRV-Cross` to [`866e5ed`](BabylonJS/SPIRV-Cross@866e5ed), the merge of [BabylonJS/SPIRV-Cross#11](BabylonJS/SPIRV-Cross#11) on top of [BabylonJS/SPIRV-Cross#10](BabylonJS/SPIRV-Cross#10) ("Expose more functions"). Together these remove `#ifndef SPIRV_CROSS_WEBMIN` guards and their `SPIRV_CROSS_INVALID_CALL()` (= `assert(false)`) stub bodies for the HLSL opcodes / helpers reachable from the BN test catalog: `OpFMod`, `OpLogicalOr`, `OpLogicalAnd`, `OpFwidthFine`, `OpVectorTimesMatrix` (×2 sites), `OpVectorExtractDynamic`, `OpSNegate`, plus `to_extract_constant_composite_expression`. Previously-stubbed opcodes now emit the actual HLSL instead of crashing or returning invalid shader code. Also re-enables 17 `validation_native.js` tests in `Apps/Playground/Scripts/config.json` that were previously excluded with `"reason": "Test crashes or hangs on Babylon Native"` and now pass on Win32 D3D11: idx 138, 241, 254, 293, 296, 309, 321, 322, 323, 332, 333, 373, 376, 391, 558, 559, 574. ## Note on remaining failures unmasked by the bump In Release builds `SPIRV_CROSS_INVALID_CALL()` is a no-op, so SPIRV-Cross was silently emitting invalid shader code and the test pipeline appeared to hang waiting for a render. After this bump, the underlying JS-side errors are now visible. Several still-failing tests turn out to have causes unrelated to SPIRV-Cross: 1. The 26 Prepass SSAO + motion blur tests fail at the JS layer with `PrePassRenderer needs WebGL 2 support` **before** any shader compile — `NativeEngine` does not advertise the WebGL2 capability that `PrePassRenderer` requires. 2. One GPU-particles test (`GPU Particles - Animations`) now fails with `TypeError: Unable to get property 'ARRAY_BUFFER' of undefined` — same root cause as the GPU-particle `ARRAY_BUFFER` bug previously identified. 3. Two tests (`GreasedLine`, `Area Lights Standard Material`) fail to load LTC LUT textures: `Error: Unknown error opening URL` — UrlLib / asset resolution issue. 4. Three OpenPBR variants (Fuzz Weight, Transmission Dispersion — the `Realtime IBL` / `Prefiltered IBL` paths) still hit shader-compile errors — likely additional `SPIRV_CROSS_INVALID_CALL()` stub sites not yet reached by this bump. These will be tracked as separate follow-up work (renderer-side WebGL2 capability, GPU-particle gl-constants binding, UrlLib LTC asset path, and a further SPIRV-Cross pass once a `Debug` build pinpoints the remaining stub sites). ## OpenGL backend coverage A local `OpenGLWindowsDevOnly` build (Windows + ANGLE, same `STRINGIZE(GRAPHICS_API) == "OpenGL"` as Linux native OpenGL) was used to validate the re-enabled tests against the OpenGL backend. Four entries diverge on OpenGL only and have been marked `"excludedGraphicsApis": ["OpenGL"]` with a documented reason: - idx 293, 296: `BGFX FATAL` `mediump float`→`int` shader-compile error in the `PrePassRenderer` fragment shader (OpenGL/ANGLE GLSL only). - idx 391: 90 900-px diff in `sphere-with-custom-shader-to-display-wireframe-using-glow-layer` (glow-layer + custom-shader divergence). idx 299 (`Prepass SSAO + GUI`) is held out of the re-enable batch entirely (kept `excludeFromAutomaticTesting: true`): it passes in isolation but produces a ~6000-px diff right at the 2.5 % `errorRatio` threshold when run after sibling Prepass-SSAO tests in the full sweep — flaky on Win32 D3D11 in CI. ## Build hygiene fix The pre-existing `OpenGLWindowsDevOnly` build was broken under MSVC `/WX` because `ExternalTexture_Shared.h` lines 25/28 trip C4702 (unreachable code) — the OpenGL impl's `GetInfo` / `Set` / `Get` always throw, so the dispatch's no-throw fall-through is statically unreachable. Added `target_compile_options(ExternalTexture PRIVATE /wd4702)` gated on `GRAPHICS_API STREQUAL "OpenGL" AND MSVC` in `Plugins/ExternalTexture/CMakeLists.txt`. No other build is affected. The right long-term fix is to make the throws conditional in the OpenGL impl. ## Verification - Win32 D3D11 (Release x64, Chakra), Windows ANGLE OpenGL (`OpenGLWindowsDevOnly`), and Linux native OpenGL all run the full sweep cleanly with the bump applied. - Re-fetched `_deps/spirv-cross-src` matches the merged `866e5ed` byte-for-byte. ## Notes - This only bumps the standalone SPIRV-Cross used by `Plugins/ShaderCompiler/Source/ShaderCompilerDXBC.cpp` (the one declared in `CMakeLists.txt`). The bgfx-bundled SPIRV-Cross under `_deps/bgfx.cmake-src/3rdparty/spirv-cross/` is unaffected. - Upstream `BabylonJS/SPIRV-Cross` is now 2 commits ahead of the previous pin (PR #10 + PR #11). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Branimir Karadzic <branimirkaradzic@gmail.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.
No description provided.