We are using bullet 2.75, but in the process of patching up to 2.76.
We are also going to be patching in 2.75-beta2 for the PS3.
In all three version:
1) *ACK!* The equivalent functions for btManifoldResult::addContactPoint() aren't providing me with valid data in m_index0 and m_partId0. This is very important to our system, as we have per-triangle collision data we are using.
2) The ContactAddedCallback is not called. Understandably, this is an issue with not being able to run a callback from a thread/SPU. And we are only using it for filtering, so it seems like a simple workaround. But was there a plan to implement it?
Testing with just the 2.75 version:
1) The system seems to issue very few tasks. With the number of tasks set to 16. Bullet will seem to consistantly
"sendRequest" then immediately "waitForResponse" without launching additional jobs.
using this archatype (sorry, can't post the actual code...) for the btThreadSupportInterface
Code: Select all
virtual void sendRequest(uint32_t uiCommand, ppu_address_t uiArgument0, uint32_t uiArgument1)
{
// issue request to thread pool
}
virtual void waitForResponse(unsigned int *puiArgument0, unsigned int *puiArgument1)
{
// wait for ALL jobs in thread pool
}
virtual void startSPU()
{
// do nothing
}
virtual void stopSPU()
{
// wait for ALL jobs in thread pool
}
2) The system seems to take a significant amount of time while nothing is going on. Our controlled objects (16+ controllers) preform a significant number of sweep test in serial using the
btDynamicsWorld::addAction(); interface. This is based on the Kinematic controller code, and doesn't seem like it could run in parallel, but is ~67% of our physics update.
The other 33% is the regular collision update running on ~150objects, all of which are either Kinematic or deactivated. This comes out to ~8ms of physics update. Is there any flags that I may not have set that would speed this up?