do you have a list ? that could help me focus ![]()
The following is a list of cases where loading issues are occurring in Babylon Lite.
ERR:LITE
Accessor_SparseType/Accessor_SparseType_03
ERR:LITE
Accessor_SparseType/Accessor_SparseType_04
ERR:LITE
Animation_SamplerType/Animation_SamplerType_01
ERR:LITE
Animation_SamplerType/Animation_SamplerType_02
Blank Rendering in Lite (6)
BLANK
Animation_SkinType/Animation_SkinType_02
92
BLANK
Animation_SkinType/Animation_SkinType_01
90
BLANK
Mesh_PrimitiveMode/Mesh_PrimitiveMode_01
77
BLANK
Mesh_PrimitiveMode/Mesh_PrimitiveMode_08
77
BLANK
Material_AlphaMask/Material_AlphaMask_06
47
BLANK
Material_AlphaBlend/Material_AlphaBlend_06
5
Severe (regionMad ≥ 40) (18)
SEVERE
Material/Material_03
121
SEVERE
Material_SpecularGlossiness/Material_SpecularGlossiness_10
96
SEVERE
Material_SpecularGlossiness/Material_SpecularGlossiness_04
91
SEVERE
Material_SpecularGlossiness/Material_SpecularGlossiness_11
91
SEVERE
Material_SpecularGlossiness/Material_SpecularGlossiness_03
86
SEVERE
Material_SpecularGlossiness/Material_SpecularGlossiness_05
77
SEVERE
Mesh_PrimitiveMode/Mesh_PrimitiveMode_00
74
SEVERE
Mesh_PrimitiveMode/Mesh_PrimitiveMode_07
73
SEVERE
Material_SpecularGlossiness/Material_SpecularGlossiness_01
71
SEVERE
Mesh_PrimitiveMode/Mesh_PrimitiveMode_03
70
SEVERE
Mesh_PrimitiveMode/Mesh_PrimitiveMode_10
69
SEVERE
Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_01
63
SEVERE
Buffer_Interleaved/Buffer_Interleaved_03
59
SEVERE
Buffer_Interleaved/Buffer_Interleaved_04
59
SEVERE
Mesh_PrimitiveMode/Mesh_PrimitiveMode_04
56
SEVERE
Mesh_PrimitiveMode/Mesh_PrimitiveMode_11
56
SEVERE
Instancing/Instancing_07
46
SEVERE
Mesh_PrimitiveAttribute/Mesh_PrimitiveAttribute_02
41
Significant (8–40) (27)
SIGNIFICANT
Material_SpecularGlossiness/Material_SpecularGlossiness_13
37
SIGNIFICANT
Material_AlphaMask/Material_AlphaMask_05
36
SIGNIFICANT
Material/Material_07
28
SIGNIFICANT
Material/Material_05
26
SIGNIFICANT
Material/Material_02
25
SIGNIFICANT
Mesh_PrimitivesUV/Mesh_PrimitivesUV_08
25
SIGNIFICANT
Material_SpecularGlossiness/Material_SpecularGlossiness_08
23
SIGNIFICANT
Material_AlphaBlend/Material_AlphaBlend_02
22
SIGNIFICANT
Accessor_Sparse/Accessor_Sparse_03
20
SIGNIFICANT
Accessor_SparseType/Accessor_SparseType_05
19
SIGNIFICANT
Accessor_Sparse/Accessor_Sparse_02
19
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_12
19
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_03
19
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_06
19
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_09
19
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_10
17
SIGNIFICANT
Animation_Skin/Animation_Skin_07
17
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_01
17
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_04
17
SIGNIFICANT
Node_NegativeScale/Node_NegativeScale_07
17
SIGNIFICANT
Animation_NodeMisc/Animation_NodeMisc_03
17
SIGNIFICANT
Mesh_PrimitivesUV/Mesh_PrimitivesUV_07
15
SIGNIFICANT
Mesh_PrimitivesUV/Mesh_PrimitivesUV_06
15
SIGNIFICANT
Mesh_PrimitivesUV/Mesh_PrimitivesUV_04
15
SIGNIFICANT
Animation_NodeMisc/Animation_NodeMisc_07
15
SIGNIFICANT
Mesh_PrimitivesUV/Mesh_PrimitivesUV_05
14
SIGNIFICANT
Animation_Skin/Animation_Skin_04
13
(BJS-side failures, for reference) (4)
The following are the results of the AI analysis.
I ran a glTF-Asset-Generator parity sweep comparing Babylon Lite against stock Babylon.js v9.5.0 and found several categories where Lite appears to diverge from Babylon.js behavior.
This is not intended as criticism of Lite — I understand it is still new and intentionally smaller in scope. I’m posting this as a structured compatibility report, hoping it helps identify missing or incomplete glTF paths.
TL;DR
I tested 201 loadable “Positive” glTF-Asset-Generator assets across 26 categories.
Result summary:
| Verdict | Count | Meaning |
|---|---|---|
| MATCH | 112 | within5 ≥ 98% and regionMad < 3.5 |
| MINOR | 30 | regionMad < 8 |
| SIGNIFICANT | 27 | regionMad 8–40 |
| SEVERE | 18 | regionMad ≥ 40 |
| BLANK_LITE | 6 | Lite drew nothing; Babylon.js rendered content |
| LOAD_ERR_LITE | 4 | Lite threw during load |
| LOAD_ERR_BJS | 4 | stock Babylon.js failed; not counted as Lite issues |
regionMad is the mean absolute per-channel difference over foreground pixels, in the 0–255 range. The threshold was calibrated using base PBR material cases such as Material_00, Material_01, and Material_06, which matched at approximately regionMad <= 2.5 / within5 = 100%.
Environment / method
-
Date: 2026-06-24
-
Babylon.js: v9.5.0
-
Runtime: headless WebGPU
-
Resolution: 1280×720
-
Models: 201 loadable Positive glTF-Asset-Generator assets
-
Camera: identical model + look-at-origin camera using manifest translation
-
Lighting: IBL-only environment
- Babylon.js:
createDefaultEnvironment - Babylon Lite:
loadEnvironment - both using
environmentSpecular.env
- Babylon.js:
-
Animations: frozen at frame 0
Harness:
tests/lite/gltf-asset-generator/sweep.spec.ts
lab/lite/gltf-test.html
lab/lite/bjs-gltf-test.html
Re-run command:
GLTF_SWEEP=1 GLTF_CATEGORIES=... npx playwright test tests/lite/gltf-asset-generator/sweep.spec.ts --workers=1 --retries=0
The sweep is opt-in via GLTF_SWEEP=1, so it does not run in CI by default.
One harness false-positive was found and fixed during the sweep: the frame-0 freeze originally called goToFrame(g, 0) without an EngineContext, which throws for skeletal/morph clips. That incorrectly labelled 8 Animation_Skin / Animation_SkinType models as load failures. After fixing this by passing the engine, 6 matched and 2 surfaced as genuine blank renders. The numbers below are post-fix.
Clearly problematic cases that look like Lite-side issues
A. Loader rejects signed BYTE / SHORT component types
loadGltf throws:
Unsupported component type: 5120 / 5122
Affected models:
| Model | Component type |
|---|---|
| Accessor_SparseType_03 | 5120 BYTE |
| Accessor_SparseType_04 | 5122 SHORT |
| Animation_SamplerType_01 | 5120 BYTE |
| Animation_SamplerType_02 | 5122 SHORT |
Sibling models using FLOAT, UNSIGNED_BYTE, and UNSIGNED_SHORT load successfully, so the missing path appears to be specifically signed integer accessor component types, probably for sparse-accessor values and animation sampler input/output.
B. Skinning renders blank for certain JOINTS / WEIGHTS accessor types
| Model | regionMad |
|---|---|
| Animation_SkinType_01 | 90 |
| Animation_SkinType_02 | 92 |
SkinType_00 and SkinType_03 match, but _01 and _02 produce an empty canvas in Lite while Babylon.js renders the deformed skin. This looks like a missing joint/weight component-type variant in the skinning path.
C. Non-triangle primitive topologies
Several Mesh_PrimitiveMode cases diverge. In some cases, Lite appears to render an “X” where Babylon.js renders the expected quad perimeter.
Severe / blank Lite cases:
Mesh_PrimitiveMode_00
Mesh_PrimitiveMode_01
Mesh_PrimitiveMode_03
Mesh_PrimitiveMode_04
Mesh_PrimitiveMode_07
Mesh_PrimitiveMode_08
Mesh_PrimitiveMode_10
Mesh_PrimitiveMode_11
Stock Babylon.js itself failed on:
Mesh_PrimitiveMode_02
Mesh_PrimitiveMode_05
Mesh_PrimitiveMode_09
Mesh_PrimitiveMode_12
Those are excluded from the Lite findings.
D. Negative node scale
The following Node_NegativeScale cases consistently diverge with regionMad around 17–19:
Node_NegativeScale_01
Node_NegativeScale_03
Node_NegativeScale_04
Node_NegativeScale_06
Node_NegativeScale_07
Node_NegativeScale_09
Node_NegativeScale_10
Node_NegativeScale_12
The following matched:
Node_NegativeScale_00
Node_NegativeScale_02
Node_NegativeScale_05
Node_NegativeScale_08
Node_NegativeScale_11
This looks like a negative-determinant transform issue, possibly winding order, normal flipping, or face-culling under mirrored scale.
E. Interleaved buffers and vertex attributes
Severe cases:
| Model | regionMad |
|---|---|
| Mesh_PrimitiveAttribute_01 | 63 |
| Buffer_Interleaved_03 | 59 |
| Buffer_Interleaved_04 | 59 |
| Mesh_PrimitiveAttribute_02 | 41 |
These may be worth checking against the recent interleaved vertex-buffer fix. They look like remaining edge cases in interleaved buffer / attribute decoding.
F. Base material, alpha, UV, instancing
Notable cases:
Material_03 regionMad 121
Material_AlphaMask_06 BLANK_LITE / regionMad 47
Material_AlphaBlend_06 BLANK_LITE / regionMad 5
Instancing_07 regionMad 46
Mesh_PrimitivesUV_* 5 of 9 diverged
Material_03 is especially visible: Lite renders much darker than Babylon.js.
Ambiguous cases
KHR_materials_pbrSpecularGlossiness
Several Material_SpecularGlossiness cases diverge, including 6 severe cases:
Material_SpecularGlossiness_01
Material_SpecularGlossiness_03
Material_SpecularGlossiness_04
Material_SpecularGlossiness_05
Material_SpecularGlossiness_10
Material_SpecularGlossiness_11
However, this extension is deprecated, and in the captures Lite sometimes appears to render the detailed material while Babylon.js v9.5.0 looks washed out. I did not use the generator reference images in this sweep, so I cannot confidently say which engine is correct for these cases.
I would treat this section as “needs reference-image adjudication” rather than a confirmed Lite bug.
Not Lite issues
The following are stock Babylon.js failures and should not be counted as Lite issues:
Mesh_PrimitiveMode_02
Mesh_PrimitiveMode_05
Mesh_PrimitiveMode_09
Mesh_PrimitiveMode_12
Caveats
Animated models were compared only at frame 0 using a deterministic freeze. This validates loading, first-frame pose, and shading, but not full animation playback.
A follow-up frame-synced animation sweep would be useful for the Animation_* categories.
not taken at criticism! On the contrary!! Thanks a ton
With API breaking changes in every patch I believe it would be a good idea to have a changelog.
For example, between 1.3.0 and 1.4.0
Relevant public API changes
AnimationGroup.currentFramewas replaced bycurrentTimein seconds.AnimationGroup.targetedAnimationsand publicTargetedAnimationdescriptors were added.metadata?: LiteMetadatawas added to animation groups, materials, and scene nodes; glTF extras can be available throughmetadata.gltf.extras.- ArcRotate cameras now publicly expose mouse orbit, panning, and wheel sensitivities.
- Morph bindings are no longer documented as limited to four targets; current weights can cover the full target count.
- New PBR extension textures include anisotropy, separate sheen roughness, and diffuse-transmission color/intensity textures.
SurfaceOptions.srgband sprite-atlassrgbsupport were added for gamma-correct rendering workflows.- Allocation-saving vector helpers were added in
InPlaceandToRefforms. disposeNavigationPlugin()was added.VERSIONis now declared asstringinstead of the stale literal"0.1.0"; at runtime it reports1.4.0.
Good idea (cc @RaananW )
Changelog is coming! it’s a must. thanks for the suggestion!!
@chase-moskal this was addressed in package version 1.4.0, please give it a try and let us know if you still see any issues with your final bundle size!
Hello ! This is great news ! I try to launch a project using babylon Lite, so I am looking for examples. I found 260 scenes in the babylon-lite package (at the /lab/lite/src/lite url).
Is there a way to look at these scenes without cloning the repo ? Are there somewhere online ?
Thanks again for this wonderful work !!
Nope we do not publish them besides the repo:(
It would help to have at least a text file with the list of demo examples just to have a fast look.
Does that help?
Sure ![]()
I think it would be good if this nice default LUT image (and default env texture as well) could be retrieved automatically like in Viewer
Otherwise one needs always to remember about it and include to build confiigurations or packages.
Fair. I’ll try and test all this if I can find a stopping point on the website I’m building.
Are there plans to support meshes with submeshes?
Not at this time. It is to big of a burden in the engine and costs a lot of perfs
In Getting Started with Babylon Lite - An explicit lifecycle it states …
- Register —
await registerScene(scene)does the deferred GPU work (builds pipelines, partitions renderables). Call this after everything is added.
How can I create fully dynamic scenes that load meshes or dynamically create parametric meshes after having called await registerScene(scene)? Do I have to create a huge pool of invisible assets before registerScene() then mutate vertex data and toggle visibility after that?
No, just addToScene when needed.
Yes, that’s what I would have expected. However in my local code, any mesh I add after registerScene() results in …
But I’m using an earlier Babylon Lite version, so I’ll update and try again.
OK progress.
After updating to 1.3.0, initially it didn’t work at all - just the scene clear color and nothing else but no console error that I was getting with 1.2.0.
However, after adding any mesh before registerScene(scene) then meshes after registerScene(scene) everything worked. So it seems I need to add at least one mesh beforehand?
Anyway, my question around the wording of the docs still stands. It makes it seem like everything must be added before calling registerScene() so maybe that wording needs changing.
- Register —
await registerScene(scene)does the deferred GPU work (builds pipelines, partitions renderables). Call this after everything is added.


