Examples of WebGL Physics Library.
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
PhysX | rapier |
|---|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | ||||
| WebGL 2.0 | Link | Link | ||||
| WebGPU | Link | Link | ||||
| Ashes | Link | |||||
| Babylon.js | Link | Link | Link | Link | ||
| ClayGL | Link | |||||
| CZPG.js | Link | |||||
| GLBoost | Link | |||||
| Grimoire.js | Link1 / Link2 | |||||
| Hilo3d | Link | |||||
| PlayCanvas | Link | |||||
| Rhodonite | Link | Link | ||||
| three.js | Link | Link1 / Link2 | Link | Link1 / Link2 | Link | Link |
| XenoGL | Link1 / Link2 |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
PhysX | rapier |
|---|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | ||||
| WebGL 2.0 | Link | Link | ||||
| WebGPU | Link | Link | ||||
| Babylon.js | Link | Link | Link | Link | ||
| ClayGL | Link | |||||
| GLBoost | Link | Link | Link | |||
| Grimoire.js | Link | Link1 / Link2 | ||||
| Hilo3d | Link | |||||
| PlayCanvas | Link | |||||
| Rhodonite | Link | Link | ||||
| three.js | Link | Link1 / Link2 | Link | Link1 / Link2 | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
PhysX | rapier |
|---|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | ||||
| WebGL 2.0 | Link | Link | ||||
| WebGPU | Link | Link | ||||
| Babylon.js | Link | Link | Link | Link | ||
| ClayGL | Link | |||||
| GLBoost | Link | Link | Link | |||
| Grimoire.js | Link | Link | ||||
| PlayCanvas | Link | |||||
| Rhodonite | Link | Link | ||||
| three.js | Link | Link1 / Link2 | Link | Link1 / Link2 | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
PhysX | rapier |
|---|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | ||||
| WebGL 2.0 | Link | Link | ||||
| WebGPU | Link | Link | ||||
| Babylon.js | Link | Link | Link | Link | ||
| ClayGL | Link | |||||
| GLBoost | Link | Link | ||||
| Grimoire.js | Link | Link | ||||
| PlayCanvas | Link | |||||
| Rhodonite | Link | Link | ||||
| three.js | Link | Link1 / Link2 | Link | Link1 / Link2 | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | |||
| WebGL 2.0 | Link | Link | |||
| WebGPU | Link | Link | |||
| Babylon.js | Link | Link | Link | Link | |
| ClayGL | Link | ||||
| GLBoost | Link | ||||
| Grimoire.js | Link | ||||
| PlayCanvas | Link | ||||
| Rhodonite | Link | Link | |||
| three.js | - / Link |
Link | Link1 / Link2 | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | |||
| WebGL 2.0 | Link | Link | |||
| WebGPU | Link | Link | |||
| Babylon.js | Link | Link | Link | Link | |
| PlayCanvas | Link | ||||
| Rhodonite | Link | ||||
| three.js | Link | Link1 / Link2 | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | |||
| WebGL 2.0 | Link | Link | |||
| WebGPU | Link | Link | |||
| Babylon.js | Link | Link | Link | Link | |
| PlayCanvas | Link | ||||
| three.js | Link | Link | Link | ||
| Rhodonite | Link | Link (WIP) |
Havok versions (WebGL 1.0 / WebGL 2.0 / WebGPU) include tuned shogi collider sizes to better match the rendered piece dimensions.
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | |||
| WebGL 2.0 | Link | Link | |||
| WebGPU | Link | Link | |||
| Babylon.js | Link | ||||
| GLBoost | Link | ||||
| three.js | Link | Link | Link | ||
| Rhodonite | Link | Link (WIP) |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | Link | |||
| WebGL 2.0 | Link | Link | |||
| WebGPU | Link | Link | |||
| Babylon.js | Link | ||||
| PlayCanvas | Link | ||||
| Rhodonite | Link | ||||
| three.js | Link | Link1 / Link2 | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link (WIP) | ||||
| WebGL 2.0 | Link (WIP) | ||||
| WebGPU | Link (WIP) | ||||
| Babylon.js | Link (WIP) | ||||
| PlayCanvas | Link | ||||
| three.js | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | ||||
| WebGL 2.0 | Link | ||||
| WebGPU | Link | ||||
| Babylon.js | Link | ||||
| PlayCanvas | Link | ||||
| three.js | Link (WIP) | Link | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link | ||||
| WebGL 2.0 | Link | ||||
| WebGPU | Link | ||||
| Babylon.js | Link | ||||
| PlayCanvas | Link | ||||
| three.js | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link (WIP) | ||||
| WebGL 2.0 | Link (WIP) | ||||
| WebGPU | Link (WIP) | ||||
| Babylon.js | Link (WIP) | ||||
| PlayCanvas | Link | ||||
| three.js | Link | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link (WIP) | ||||
| WebGL 2.0 | Link (WIP) | ||||
| WebGPU | Link (WIP) | ||||
| Babylon.js | Link | ||||
| PlayCanvas | |||||
| three.js | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link (WIP) | ||||
| WebGL 2.0 | Link (WIP) | ||||
| WebGPU | Link (WIP) | ||||
| Babylon.js | Link | ||||
| PlayCanvas | |||||
| three.js | Link |
| Library | ammo.js | Cannon.js / cannon-es |
Havok | Oimo.js / OimoPhysics |
rapier |
|---|---|---|---|---|---|
| WebGL 1.0 | Link (WIP) | ||||
| WebGL 2.0 | Link (WIP) | ||||
| WebGPU | Link (WIP) | ||||
| Babylon.js | Link | ||||
| PlayCanvas | |||||
| three.js | Link |
All physics libraries used in this project adopt the SI (International System of Units): meters (m), kilograms (kg), seconds (s), and newtons (N).
The convention 1 unit = 1 meter is recommended for stable simulation results.
| Library | Unit System | Recommended Scale | Notes |
|---|---|---|---|
| ammo.js (Bullet) | SI (m / kg / s / N) | 0.05 – 10 m | Most sensitive to scale; official docs strongly recommend matching real-world meter scale |
| Cannon.js / cannon-es | SI (m / kg / s / N) | Flexible | Relatively tolerant of scale variation |
| Havok | SI (m / kg / s / N) | 0.1 – 10 m | |
| Oimo.js / OimoPhysics | SI (m / kg / s / N) | 0.1 – 10 m | |
| PhysX | SI (m / kg / s / N) | 0.1 – 10 m | |
| rapier | SI (m / kg / s / N) | Flexible | Good numerical stability across a wide range of scales |
Tip: Objects smaller than ~0.05 m or larger than ~100 m may cause floating-point instability (jitter, tunneling). Keep rigid bodies within the recommended scale range for best results.















