-
-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance - Time to optimise? #319
Comments
I was just coming here to write a similar issue. The
I would definitely echo this, I am not trying to throw any shade on the developers here. This library seems really great already, just lacking in performance right now. |
This has been sitting here for a while now; apologies for not leaving a proper response sooner. This is clearly a very important issue to address, and definitely one of the areas where bevy_xpbd is severely lacking in comparison to Rapier and many other physics engines. I'm in the process of a major rework of the solver and a lot of the other internals (see #346, although it's slightly outdated at this point). It will hopefully be ready and released in roughly a couple of weeks. The new version only runs narrow phase collision detection just once per frame instead of once per substep, and is also more stable in general, which should improve performance for collision-heavy applications quite significantly (about 3-5x fps in some tests, but results may vary). After that, I plan on opening a bunch of issues for further performance improvement work, as well as a tracking issue. Some big things include:
Simulation islands will probably be the first big improvement I plan on working on after the upcoming release, along with one-body contact constraints (which should be pretty trivial) and some smaller miscallaneous performance work. Other things like graph coloring and SIMD constraints might take longer, but I'm interested in trying to implement them as well. In short, I acknowledge that the current performance frankly sucks for physics engine standards, and I really want to improve the engine in this regard. The new solver should hopefully address some collision performance issues, but there will still be a lot of follow-up work. I will lay this out in more detail in issues after the upcoming release. |
Amazing! great to see these small high-reward fixes. great work finding these!
Sounds like good first-issues for contributors! I have very high confidence in this project, given your priorities and roadmap. Well done! |
Hello, first I'd like to thank you for this amazing crate! You're doing such a great job.
More of an opinion / suggestion than an issue, but I think it might be time to focus on performance rather than adding features.
Bevy_xpbd is becoming very popular, and gets mentioned whenever physics come up, and is able to address most use-cases.
With its tight Bevy integration it very easy and convenient to use.
But - there is a big performance gap between it and Rapier.
For me, on low-end Android devices and Wasm, xpbd struggled with 100-200 constantly colliding entities, even with just 2 substeps.
Rapier can handle +1000 entities.
Perhaps it's time to adjust priorities?
Thanks again for your amazing contribution!!!
The text was updated successfully, but these errors were encountered: