Skip to main content

21 posts tagged with "release"

View All Tags

v0.35 - Rapier vs Box2D vs Jolt vs Box3D vs Godot Physics

· 5 min read

Godot Rapier now runs on Rapier 0.35.

Both 2D and 3D builds now always have parallel SIMD solver and cross platform determinism enabled.

Here is the repo used to run the tests benchmarks-repo.

2D: Rapier vs Box2D

Rapier is the only engine that keeps every scene stable: Box2D collapses the pyramid and blows the joints apart, those are marked as unstable.

EngineVersionAddon
Rapier Rapier2Dv0.35godot-rapier2d
Box2D Box2Dv3.1godot-box2d-v3
Godot Physics Godot Physics 2Dv4.7ships with Godot
EngineRapier
Rapier2D
Box2D
Box2D
Godot Physics
Godot Physics
pyramid20.0 ms
1.8 cores
21.3 ms
3.8 cores
unstable
147 ms
1.2 cores
smash11.9 ms
2.1 cores
11.6 ms
3.8 cores
55.1 ms
1.3 cores
pile9.3 ms
1.7 cores
6.7 ms
2.9 cores
71.1 ms
1.3 cores
queries6.2 ms
1.2 cores
4.6 ms
1.6 cores
57.2 ms
1.1 cores
joints10.2 ms
1.5 cores
4.9 ms
2.6 cores
unstable
unstable
never finishes
Benchmark1st2nd3rd
PyramidRapier2DBox2D 1.07xGodot Physics 7.35x
SmashBox2DRapier2D 1.02xGodot Physics 4.76x
Mixed shape pileBox2DRapier2D 1.38xGodot Physics 10.60x
Query stormBox2DRapier2D 1.37xGodot Physics 12.56x
Joint gridBox2DRapier2D 2.06xGodot Physics never finishes

Unstable runs, whose times are not comparable: Box2D on the pyramid (collapses) and on the joint grid (infinite displacement). Godot Physics does not finish the joint grid within 60 s.

3D: Rapier vs Jolt vs Box3D

Rapier3D is fastest on queries and joints and stays close on the rest; Jolt crashes the joint grid. Box3D became multi-threaded in godot-box3d v0.2.4 and is now the fastest on three scenes — the numbers below were re-measured against it.

EngineVersionAddon
Rapier Rapier3Dv0.35godot-rapier3d
Jolt Joltv5.5.0ships with Godot v4.7
Box3D Box3Dv0.1godot-box3d v0.2.4
Godot Physics Godot Physics 3Dv4.7ships with Godot
Rapier
Rapier3D
Jolt
Jolt
Box3D
Box3D
Godot Physics
Godot Physics
queries5.9 ms
1.0 cores
26.4 ms
1.1 cores
6.7 ms
1.1 cores
73.3 ms
1.0 cores
pyramid14.6 ms
2.8 cores
26.9 ms
4.7 cores
13.5 ms
2.7 cores
48.0 ms
1.4 cores
pile11.3 ms
2.1 cores
13.7 ms
3.6 cores
9.7 ms
2.4 cores
84.9 ms
1.7 cores
joints8.9 ms
1.7 cores
unstable
never finishes
10.3 ms
1.8 cores
unstable
26.1 ms
1.2 cores
smash19.1 ms
2.8 cores
12.1 ms
5.0 cores
9.6 ms
2.9 cores
100 ms
1.3 cores
Benchmark1st2nd3rd4th
Query stormRapier3DBox3D 1.12xJolt 4.46xGodot Physics 12.35x
PyramidBox3DRapier3D 1.08xJolt 1.99xGodot Physics 3.55x
Mixed shape pileBox3DRapier3D 1.16xJolt 1.41xGodot Physics 8.73x
Joint gridRapier3DBox3D 1.15xGodot Physics 2.92xJolt never finishes
SmashBox3DJolt 1.26xRapier3D 1.99xGodot Physics 10.40x

Unstable runs, whose times are not comparable: Box3D on the joint grid (infinite displacement). Jolt does not finish the joint grid within 60 s, and Godot Physics does not finish the drop scene.

experimental-threads is no longer enabled

Official builds used to enable experimental-threads so the physics server could be driven from other threads. It cost 7-51% depending on the scene, and it turned out to be unnecessary: Godot already serialises every call onto a single physics thread through PhysicsServer3DWrapMT and its command queue, so the extra synchronisation was protecting a call path that is never concurrent. Godot Physics, Jolt and Box3D all take the same no-locking approach.

New features

  • Rope and fixed joints, in 2D and 3D. Godot has no equivalent of either. Reference.
  • Per-body solver iterations: stabilize one important body without paying for it globally. Reference.
  • Per-joint stiffness and toggling: joint_set_softness, joint_set_enabled for breakable constraints. Reference.
  • Joint warm starting: stiff joint assemblies converge much better, at no measurable cost.
  • New project settings for motion recovery, shape casting and query behaviour.

Full Changelog: https://github.com/appsinacup/godot-rapier-physics/blob/main/CHANGELOG.md

v0.8.37

· One min read

What's Changed

Full Changelog: https://github.com/appsinacup/godot-rapier-physics/compare/v0.8.36...v0.8.37

v0.8.33

· One min read

What's Changed

New Contributors

Full Changelog: https://github.com/appsinacup/godot-rapier-physics/compare/v0.8.32...v0.8.33

v0.8.30

· One min read

What's Changed

New Contributors

Full Changelog: https://github.com/appsinacup/godot-rapier-physics/compare/v0.8.29...v0.8.30