Skip to content

Fixes for skinning and morph targets#11

Merged
bghgary merged 2 commits into
BabylonJS:masterfrom
bghgary:skin-fix
Jun 28, 2019
Merged

Fixes for skinning and morph targets#11
bghgary merged 2 commits into
BabylonJS:masterfrom
bghgary:skin-fix

Conversation

@bghgary
Copy link
Copy Markdown
Contributor

@bghgary bghgary commented Jun 26, 2019

No description provided.

@bghgary bghgary requested a review from syntheticmagus June 26, 2019 23:50
@bghgary bghgary merged commit 2ea2ab4 into BabylonJS:master Jun 28, 2019
@bghgary bghgary deleted the skin-fix branch June 28, 2019 16:40
@CedricGuillemet CedricGuillemet mentioned this pull request Oct 22, 2020
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>
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.

2 participants