Replies: 7 comments 9 replies
-
Hello, PhysX is obviously a much bigger project and it has more features than Jolt. I think the biggest limitation of Jolt right now is that if your simulation requires all physics objects to be on a single pile then it does not scale well (i.e. the entire simulation will run on a single CPU). If your physics objects are spread out more, then it will use all CPU cores and then the performance is pretty decent. This is a fixable limitation, but as this limitation hasn't been an issue for me, I haven't spent time on it. I haven't tried out PhysX 5.0 yet, but if you want to use the PEEL test above then please keep in mind that the Jolt version in there has none of the more modern CPU instructions enabled, it links against the Release instead of the Distribution version (which means there's some debug code in there) and the number of solver steps are set to default which is good for a high quality simulation, but you can gain quite a bit by lowering that. You can find my performance comparison for PhysX 4 here which also includes source code to run the test yourself if you want. With respect to support: I intend to keep working on this, but as it is my hobby project, I don't really have a roadmap for it. I have a large to do list (which I'd rather not disclose as that will create expectations) and I tend to work on what is requested by the community. I think the current popular request is support for double precision, so that's one of the next things to look at. |
Beta Was this translation helpful? Give feedback.
-
The Distribution build config didn't compile for me in PEEL (link error below). But it had the same preprocessor defines as the Release build config w.r.t. CPU instructions. 1>PINT_Jolt.obj : error LNK2001: unresolved external symbol "public: virtual void __cdecl JPH::ConvexShape::DrawGetSupportFunction(class JPH::DebugRenderer *,class JPH::Mat44 const &,class JPH::Vec3,class JPH::Color,bool)const " (?DrawGetSupportFunction@ConvexShape@JPH@@UEBAXPEAVDebugRenderer@2@AEBVMat44@2@VVec3@2@VColor@2@_N@Z) |
Beta Was this translation helpful? Give feedback.
-
and the number of solver steps are set to default I kind of missed that you changed that in your pull request :( What was wrong with 1/4 ? Anyway you can change that in the UI guys. |
Beta Was this translation helpful? Give feedback.
-
You can find my performance comparison for PhysX 4 here which also includes source code to run the test yourself if you want. FWIW, here's what I get for that scene when comparing Jolt/Release/1+4 iter/16 threads vs PhysX 4.1.2/8 threads in PEEL. The curves intersect so I'm not sure capturing the results of the test with a single "steps/second" number paints an accurate picture of what's going on, but.... oh well. Use PEEL for more detailed results. |
Beta Was this translation helpful? Give feedback.
-
I like the "extended version" of this test scene in PEEL, where I made the scene a bit larger (it makes the performance curves less noisy). Here is what I get for Jolt/Release/1+4 iters/16 threads vs PhysX 4.1.2/PhysX 5.1.0/15 threads. It shows the small performance improvements on this scene between PhysX 4 and PhysX 5, and shows in a perhaps clearer way that the "winner" in these tests depends on where you take your performance samples. Might also depend on your CPU (Intel i9 here). To produce these graphes:
Have fun :) |
Beta Was this translation helpful? Give feedback.
-
Related: https://twitter.com/rajetic/status/1590670754047148033?s=20&t=hR6ISULs_KiDEd7NMnlBRw |
Beta Was this translation helpful? Give feedback.
-
Hi there!
Love your physics engine and definitely considering using it for my next project.
What are the known limitations of Jolt compared to PhysX? Did you run benchmarks against PhysX 5.0?
Are you planning to keep supporting it in the future?
Do you have a roadmap of upcoming features?
Thanks
Beta Was this translation helpful? Give feedback.
All reactions