Strategies for Simulation Islands
Posted: Tue May 21, 2013 2:34 pm
Hello,
I recognize there is a post from 2006 http://www.bulletphysics.org/Bullet/php ... ?f=4&t=543 about simulation islands, but I wondered about peoples opinions today about building simulation islands.
My engine currently uses union-find to rebuild the simulation islands every frame, effectively making islands persist for only long enough to split simulations down into parts and run them.
My environment has suddenly changed to a slower hand-held device with bad memory performance, so suddenly the iteration over a large number of sleeping bodies has started showing up in my profiler. Now I wonder if there isn't value moving island management out of simply the simulation step and make the island building/splitting persistent, and amortizable across multiple frames.
Given that broadphase implemented with AddOverlap/RemoveOverlap methods, we can use those pairs to merge islands along with adding general constraints. Keeping the list of islands split into two lists, active and sleeping, means the entire list of rigid bodies doesn't have to be traversed each frame. Furthermore, I imagine i can split islands periodically, in a round robin fashion, to amortize cost over multiple frames.
Before I jump into this further, I wonder if other people have any thoughts on island management strategies.
Best,
S
I recognize there is a post from 2006 http://www.bulletphysics.org/Bullet/php ... ?f=4&t=543 about simulation islands, but I wondered about peoples opinions today about building simulation islands.
My engine currently uses union-find to rebuild the simulation islands every frame, effectively making islands persist for only long enough to split simulations down into parts and run them.
My environment has suddenly changed to a slower hand-held device with bad memory performance, so suddenly the iteration over a large number of sleeping bodies has started showing up in my profiler. Now I wonder if there isn't value moving island management out of simply the simulation step and make the island building/splitting persistent, and amortizable across multiple frames.
Given that broadphase implemented with AddOverlap/RemoveOverlap methods, we can use those pairs to merge islands along with adding general constraints. Keeping the list of islands split into two lists, active and sleeping, means the entire list of rigid bodies doesn't have to be traversed each frame. Furthermore, I imagine i can split islands periodically, in a round robin fashion, to amortize cost over multiple frames.
Before I jump into this further, I wonder if other people have any thoughts on island management strategies.
Best,
S