You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This page maps the feature gap between Babylon Lite and Babylon.js (BJS), category by category. It is the honest, detailed view of what Lite supports today, what is partially supported, and what it intentionally won't support — so you can decide whether Lite fits your project.
Babylon Lite is not a replacement for Babylon.js. The two engines move forward side by side. Lite optimizes for the smallest bundle and the highest performance on WebGPU; Babylon.js optimizes for the broadest, most mature feature set with WebGL and WebGPU support. Closing the gap below is our top priority — features land in Babylon.lite as isolated, tree-shakable modules, so the engine grows without bloating your bundle.
Legend
Symbol
Meaning
✅
Supported
⚡
Partial — a subset is implemented; see notes
—
Not yet available
🚫
Won't support — out of scope by design
★
Lite advantage — area where Lite leads Babylon.js
Rendering API
Feature
Lite
BJS
Notes
★ WebGPU
✅
✅
Lite is WebGPU-exclusive — zero abstraction overhead
WebGL 2.0
🚫
✅
Not planned — WebGPU only by design
WebGL 1.0
🚫
✅
Not planned — WebGPU only by design
4× MSAA
✅
✅
Depth / Stencil Buffer
✅
✅
depth24plus-stencil8
HDR Rendering
✅
✅
Tone Mapping
✅
✅
Image processing pipeline
Exposure / Contrast
✅
✅
Via ImageProcessingConfig
Canvas Resize Handling
✅
✅
Automatic per-frame
Draw Call Counting
✅
✅
EffectRenderer / EffectWrapper
✅
✅
Scenes 74-76 — direct swapchain renderer plus RTT task path
Fullscreen Effect Passes
✅
✅
Single fullscreen triangle, no vertex/index buffers
Effect RenderTarget Output
✅
✅
Scene 75 — render effect into texture, then use it in a material
Effect Texture Bindings
✅
✅
Scene 76 — Texture2D + sampler binding via setEffectTexture()
Frame-Graph RTT Material Override
✅
✅
Scene 110 — offscreen pass renders selected meshes with an override material and camera, then samples the RTT in the main pass
Materials
Feature
Lite
BJS
Notes
PBR Metallic-Roughness
✅
✅
Full GGX / Smith / Schlick BRDF
PBR Specular-Glossiness
✅
✅
KHR_materials_pbrSpecularGlossiness
Standard Material (Blinn-Phong)
✅
✅
Diffuse, specular, ambient, emissive
Mesh Vertex Colors
✅
✅
PBR automatic; Standard via enableStandardVertexColors() opt-in (Scene 267)
Background Material
✅
✅
Ground plane + skybox rendering
Normal Mapping
✅
✅
Cotangent frame, invertNormalMapX
Emissive Textures
✅
✅
Occlusion (AO) Maps
✅
✅
ORM texture packing
Metallic Reflectance Map
✅
✅
metallicReflectanceTexture support
Specular Anti-Aliasing
✅
✅
getAARoughnessFactors when normal map present
Alpha Blend / Alpha Test
✅
✅
OPAQUE, BLEND, MASK modes
Double-Sided Rendering
✅
✅
Opacity Textures
✅
✅
With depth-write disabled for transparent
Bump / Height Mapping
✅
✅
Lightmap Textures
✅
✅
Standard material UV2; PBR via opt-in enablePbrLightmap() + setPbrLightmap()
Ambient Textures
✅
✅
Reflection Textures
✅
✅
Spherical + planar coord modes
UV Scaling / Offset
✅
✅
UV2 Channel
✅
✅
For lightmaps and AO
Node Material
✅
✅
NME snippet parser with lab-proven core, compatibility, PBR, math/modes, color, UV/texture/procedural, normal/screen/depth/matrix/scene-state, loop, and storage blocks (Scenes 60-89)
Shader Material
✅
✅
WGSL-only ShaderMaterial with typed uniforms, samplers, defines, alpha blend/test; opt-in enableShaderMaterialVisiblePacketUpdates() defers hidden packet system/resource work, including grouped opaque members; plain storage meshes can explicitly borrow GPU-produced indexed indirect arguments without count readback (Scenes 159-163)
Material Plugins
✅
✅
Opt-in enableMaterialPlugins() — custom WGSL injection on PBR/Standard, zero bundle cost when unused (Scene 217)
Material Stencil
✅
✅
Opt-in enableMaterialStencil() — per-material stencil write/test (mask & discard) on Standard/PBR/Shader; zero bundle cost when unused
PBR Clear Coat
✅
✅
Scene 19
PBR Sheen
✅
✅
Scene 21
PBR Anisotropy
✅
✅
Scene 23
PBR Subsurface / Translucency
✅
✅
Scene 26 — thickness map, translucency, tint
Material Variants (KHR_materials_variants)
✅
✅
Scene 27 — runtime variant selection
PBR Iridescence
✅
✅
Native PBR thin-film iridescence (Scene 177); NME iridescence remains covered separately by Scene 87
Grid Material
✅
✅
Procedural GridMaterial parity with @babylonjs/materials (Scene 213)
Lights
Feature
Lite
BJS
Notes
Hemispheric Light
✅
✅
Directional Light
✅
✅
Point Light
✅
✅
Spot Light
✅
✅
With cone angle + exponent falloff
Multi-Light (N lights)
✅
✅
Dynamic UBO packing
Per-Mesh Light Inclusion
✅
✅
Scene 111 — includedOnlyMeshIds-style light selection across Standard, PBR, NME, and supported shadow generators
Light Intensity / Color
✅
✅
Diffuse + specular per light
Area Lights
—
✅
Cameras
Feature
Lite
BJS
Notes
Arc Rotate Camera
✅
✅
Orbit / zoom / pan / inertia
Auto-Framing (fitToScene)
✅
✅
Default camera for loaded models
Free Camera
✅
✅
Scene 18, 24, 25 — WASD/arrow controls
Geospatial Camera
✅
✅
Globe-orbit camera (center/yaw/pitch/radius) with fly-to + controls (Scene 225)
Orthographic Projection
✅
✅
Any camera via enableOrthographicCamera() opt-in; live/animatable bounds, aspect-derived or off-center (Scene 268)
Follow Camera
—
✅
Universal Camera
—
✅
VR / XR Camera
—
✅
Device Orientation Camera
—
✅
Mesh & Geometry
Feature
Lite
BJS
Notes
Sphere
✅
✅
Configurable segments
Box
✅
✅
Torus
✅
✅
Configurable thickness/tessellation
Ground Plane
✅
✅
Ground from Heightmap
✅
✅
GPU texture → vertex displacement
Thin Instances
✅
✅
add / remove / set / flush API
Observable Transforms
✅
✅
ObservableVec3 auto-dirty on mutation
Transform Hierarchy
✅
✅
Version-based lazy world matrix, IWorldMatrixProvider on all entities
Clone Transform Node
✅
✅
Cylinder
✅
✅
Cylinder / cone / prism via diameterTop/Bottom
Plane
✅
✅
size or width/height
Disc / Ring
✅
✅
Configurable arc & tessellation
Polyhedra
✅
✅
15 BJS presets, flat & smooth normals
Ribbon / Tube / Extrude
✅
✅
Path3D parallel-transport frames, closePath/closeArray, cap modes
CSG / CSG2 (Boolean Ops)
✅
✅
Scenes 90/91 — legacy mesh CSG plus Manifold-backed CSG2 subtract, intersect, and union/add operations
Instanced Meshes
🚫
✅
Won't support BJS InstancedMesh API; use thin instances instead
Skeleton & Animation
Feature
Lite
BJS
Notes
Skeletal Animation
✅
✅
GPU bone textures (rgba32float)
4-Bone Skinning
✅
✅
JOINTS_0 / WEIGHTS_0
8-Bone Skinning
✅
✅
JOINTS_1 / WEIGHTS_1
Morph Targets
✅
✅
Up to 4 targets, position + normal deltas
Animation Groups
✅
✅
play / pause / stop / seek / loop / speed
Linear Interpolation
✅
✅
Step Interpolation
✅
✅
Cubic Spline
✅
✅
Deterministic Seek
✅
✅
Fixed-timestep for parity testing
Animation Blending
✅
✅
Weighted blend, cross-fade, and additive animation groups (Scenes 155-158)
Animation Masking
✅
✅
AnimationGroupMask include/exclude target-name filtering; opt-in, zero bundle cost when unused (Scene 251)
Animation Events
—
✅
Animation Weights
✅
✅
AnimationGroup weight control through AnimationManager
Vertex Animation Textures (VAT)
✅
✅
Baked skeletal animation played on the GPU, incl. per-instance thin-instanced VAT (Scenes 218-219)
Environment & IBL
Feature
Lite
BJS
Notes
Babylon .env Files
✅
✅
RGBD cubemap decode
HDR Panoramas (.hdr)
✅
✅
Equirect → cubemap → prefiltered IBL
Image-Based Lighting
✅
✅
Split-sum approximation
BRDF Lookup Table
✅
✅
Pre-baked PNG, RGBD compute decode
Spherical Harmonics
✅
✅
Irradiance from environment
DDS Cube Skybox
✅
✅
Cubemap Skybox
✅
✅
6-face cube texture
HDR Skybox
✅
✅
Ground + Skybox Background
✅
✅
Fresnel ground opacity, premultiplied alpha
Fog (Linear / Exp / Exp²)
✅
✅
Environment Rotation
✅
✅
Environment Skybox Blur
✅
✅
Continuous fractional cubemap LOD
Reflection Probes
—
✅
Shadows
Feature
Lite
BJS
Notes
ESM Shadows (Directional)
✅
✅
Depth + Gaussian blur passes
Shadow Map Size Config
✅
✅
Shadow Bias / Darkness
✅
✅
Frustum Edge Falloff
✅
✅
PCF Shadows
✅
✅
Spot + directional PCF (Scenes 18, 111)
Cascaded Shadow Maps
✅
✅
Directional CSM, up to 4 cascades, PCF5, Standard + PBR receivers (Scenes 214-215)
Point Light Shadows
—
✅
Spot Light Shadows
✅
✅
Scene 18 (PCF)
Material-Aware Shadow Depth
✅
✅
Shadow material views and alpha-discard casters for Standard, PBR, and NodeMaterial (Scenes 116, 140, 141)
Contact Hardening Shadows
—
✅
Loaders
Feature
Lite
BJS
Notes
glTF 2.0 / GLB
✅
✅
Meshes, materials, skins, morphs, animations
.babylon Format
✅
✅
Meshes, standard materials, lights
Environment .env
✅
✅
HDR Panorama .hdr
✅
✅
Skybox Cube Textures
✅
✅
2D Texture Loading
✅
✅
With mipmap generation
OBJ / MTL
—
✅
STL
—
✅
FBX
—
✅
KTX1 Compressed Textures
✅
✅
Scene 25 — ASTC / BC / ETC2 auto-format + PNG fallback
KTX2 Textures
✅
✅
Scene 112 — KHR_texture_basisu glTF texture sources
Basis Universal (.basis)
✅
✅
Scene 36 — transcoder fetched from BJS CDN; BC7 / ASTC / ETC2 / BC3 auto-select + RGBA32 fallback
glTF 2.0 Extensions (Khronos + vendor)
Feature
Lite
BJS
Notes
KHR_materials_pbrSpecularGlossiness
✅
✅
Archived ext — mapped to metallic-roughness (Scene 6)
KHR_materials_variants
✅
✅
Scene 27 — runtime variant selection
KHR_materials_unlit
✅
✅
Scene 32 — base color output, no lighting
KHR_materials_clearcoat
✅
✅
Scene 28 — glTF loader auto-wires clearcoat + roughness + normal textures
KHR_materials_sheen
✅
✅
Scene 29 — glTF loader with BJS-spec albedo scaling
KHR_materials_anisotropy
✅
✅
glTF loader auto-wires strength + rotation (manual API: Scene 23)
KHR_materials_volume
✅
✅
glTF loader auto-wires attenuation + thickness (Scene 30); manual API Scene 26
Engine runs unchanged on a DOM canvas or an OffscreenCanvas transferred to a Web Worker (Offscreen demo)
Text Rendering
✅
✅
GPU text renderer with layered layout + editor (Scenes 180-181)
Gizmos
✅
✅
Position / rotation / scale, bounding-box, camera + light gizmos on a utility layer (Scenes 221-224)
Geometry Buffer Renderer
✅
✅
Frame-graph geometry renderer producing normal / depth / position textures; feeds DoF + CoC (Scenes 145-149)
Large World Rendering (Floating Origin)
✅
✅
Camera-relative rendering + multi-region physics for huge world coordinates (Scenes 200-209)
Scene Optimizer
—
✅
Asset Manager
—
✅
Scene Serialization
—
✅
How to read the gap
✅ on both sides means the feature is covered in Lite to parity with Babylon.js — validated by a pixel-diff against Babylon.js where a parity scene exists.
⚡ on Lite means a meaningful subset is available today; the notes describe exactly what is and isn't covered. These are the most likely candidates to fully finish next.
— on Lite means the feature isn't available yet. If your project depends on one of these, Babylon.js is the right option today — and let us know, because your feedback will help shape the Lite roadmap.
🚫 on Lite means the feature is intentionally out of scope (e.g. WebGL, the classic InstancedMesh API). These reflect deliberate design trade-offs that buy Lite its size and speed; use the noted alternative (e.g. thin instances).
This table tracks the current state and will be updated regularly as the gaps close between Babylon.lite and Babylon.js.
Next steps
🚀 Getting Started — install Lite, learn the mental model, and render your first scene.
🛝 Lite Playground — try covered features live in your browser, no setup required.
🔁 Porting Guide — translate a Babylon.js scene to Babylon Lite, side by side.