feat: solver improvements + release v0.29.0 - #876
Merged
Conversation
sebcrozet
force-pushed
the
solver-improvements
branch
from
September 5, 2025 16:51
1571b62 to
c5f949a
Compare
sebcrozet
force-pushed
the
solver-improvements
branch
from
September 5, 2025 16:58
c5f949a to
041cbf1
Compare
Member
Author
|
Pulish dry-run failure is expected. |
|
Nice 🙂 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR reworks the constraints solver in order to both simplify and optimize it.
Simplifications
The simplifications aim to make it easier the future to optimize the solver and experiment with new approaches. This allows the removal of large chunks of code that were generally mathematically redundant.
Optimizations
IntegrationParameters::friction_model.rapier2d, even when itssimd-stablefeature was enabled. This resulted in a performance loss due to relying on the compiler’s auto-vectorization rather than the manual intrinsics calls… This is now fixed.Features
RigidBodyBuilder::gyroscopic_forces_enabledorRigidBody::enable_gyroscopic_forces.Fixes
Results
Overall performance improvements are very dependent on the content of the simulation. The general speedup on contacts-heavy scenes is of about 25%. The timings below are given assuming that the
simd-stablefeature is enabled (and compilation is in release mode of course).Keva tower (3D)
Total step time went down from 20ms to 14ms.

Before:
Now:

Tower of blocks (2D)
Total step time went down from 25ms to 18ms.


Before:
Now: