Page 1 of 1

Bullet 2.73 SP1 released: fast btCudaBroadphase, SSE solver

Posted: Sun Nov 16, 2008 8:42 am
by bullet_team
Bullet 2.73 SP1 has been released, from SVN revision r1554 (Updated December 2, 2008)

http://code.google.com/p/bullet/downloads/list
  • *** NEW *** SP1 release fixes several issues related to contact/compounds and adds a SIMD/SSE constraint solver
  • Improved CUDA broadphase support. See Bullet/Extras/CUDA and CDTestFramework for a benchmark. It has an excellent worst case, and for large amount of objects it outperform SAP and btDbvt hands down.
  • Improved ray test and convex sweep test performance using broadphase acceleration structure
  • Added btGhostObject. This helps character controller, explosions, triggers and other local collision queries and short ray tests. It is now used by the btKinematicCharacterController.
  • Improved CMake support with 'install', VERSION info and OSX 'framework' support, thanks to ejtttje
  • IBM Cell SDK 3.1 build support, thanks to emgruett, Joczhen and danieltracy
  • Improved btHeightfieldTerrainShape support and new Demos/TerrainDemo
  • Compound shape export to BulletColladaConverter, thanks to JamesH for the report.
  • Several fixes thanks to Ole K, related to inertia tensor computation, avoiding non-determinism and more.
  • Added Extras/IFF binary chunk serialization library as preparation for in-game native platform serialization (with planned COLLADA physics conversion)
  • Added SCE Physics Effects box-box collision detection for SPU/BulletMultiThreaded version, thanks to Sony Computer Entertainment Japan (SCEI)
  • Moved BulletMultiThreaded and GIMPACT from Extras to /src/BulletMultiThreaded /src/BulletCollision/Gimpact for better integration
  • Removed btPoint3 -> it was a typedef to btVector3. So please find and replace all btPoint3 -> btVector3
  • Add CProfileManager::dumpAll() to dump detailed performance statistics to console using printf. Add this call after stepSimulation().
  • Reduced default memory pool allocation (from 40Mb -> 3Mb), helpful for iPhone developers.
Image
btCudaBroadphase. Even for 8192 objects with little motion coherence: CUDA (btCudaBroadphase) 6ms, OPCODE Array SAP 37ms, Bullet dynamic AABB tree (btDbvtBroadphase): 12ms. The best case for 8192 for the CUDA broadphase is 4ms, where as SAP, btDbvt are practically 0ms.

Thanks to everyone for feedback, bug fixes and improvements.
See also ChangeLog
Feedback is welcome,
Thanks,
Erwin

Re: Bullet 2.73 released: btGhostObject, btCudaBroadphase

Posted: Thu Nov 20, 2008 2:58 pm
by nadro
In this release CharacterDemo crash at startup. I also see problems with acces to btRigidBody from my classes. With 2.72 all works properly. I was compiled it via VC2008EE, and I tested on Vista x64 and Windows XP, on both systems I have errors. In Debug mode CharacterDemo is ok.

EDIT -> this was fixed, please download Bullet 2.73 again

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Sun Nov 23, 2008 12:18 pm
by nadro
Hi, I found source of my second problem in this release:

Code: Select all

Rev 1493: /src/LinearMath/btQuadWord.h
#ifndef USE_LIBSPE2
ATTRIBUTE_ALIGNED16(class) btQuadWordStorage
#else
class btQuadWordStorage
#endif
In small size test application eg. Bullet demos etc. all works ok, but in my game engine I have problem. When I try get access to Body and return some values eg. position, sometimes I don't have properly value. Example:

Code: Select all

class Entity
{
...
btRigidBody* getBody()
{
cout << Body->getCenterOfMassPosition().getY(); // works ok
return Body;
}
...
};
but, when sometimes I get this Body, example:

Code: Select all

cout << World->getEntityManager()->getEntity(0)->getBody()->getCenterOfMassPosition().getY(); // value is wrong
When I use 'class btQuadWordStorage' instead 'ATTRIBUTE_ALIGNED16(class) btQuadWordStorage' all is ok. I use VS2008EE. Maybe 'ATTRIBUTE_ALIGNED16(class) btQuadWordStorage' shouldn't default parameter?

2.73 and iPhone

Posted: Sun Nov 23, 2008 4:49 pm
by bram
I used Cmake -G Xcode
With this I could build most OSX demos with Xcode.

When I selected iPhone architecture in Xcode, I could only build the libraries.
The demos, and libGLUI failed.

E.g. libGLUI gave me:
OpenGL/gl.h no such file or directory.

Isn't Bullet supposed to have out-of-box iphone support?

thx,

Bram

Re: 2.73 and iPhone

Posted: Mon Nov 24, 2008 3:47 am
by Erwin Coumans
bram wrote: Isn't Bullet supposed to have out-of-box iphone support?
Bullet library compiles out-of-the box, but libglui not yet indeed. So for demos/graphics on iPhone we provide the Oolong Engine. Just open Oolong Engine2/Examples/Physics/FallingCubes/FallingCubes.xcodeproj and configure your iPhone developer license.

The Oolong Engine includes the updated Bullet 2.73 library, and uses the same Zlib license:
http://oolongengine.googlecode.com

Hope this helps,
Erwin

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Mon Nov 24, 2008 4:26 am
by Erwin Coumans
nadro wrote: When I use 'class btQuadWordStorage' instead 'ATTRIBUTE_ALIGNED16(class) btQuadWordStorage' all is ok. I use VS2008EE. Maybe 'ATTRIBUTE_ALIGNED16(class) btQuadWordStorage' shouldn't default parameter?
We are preparing for SIMD support, but if it causes problems we could remove ATTRIBUTE_ALIGNED16 in a future release.
How do you allocate a btRigidBody exactly?

Can you try to add this at line 76 of btRigidBody.h and see if that helps?

Code: Select all

 	BT_DECLARE_ALIGNED_ALLOCATOR(); 
Thanks for the report,
Erwin

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Mon Nov 24, 2008 11:38 am
by simesgreen
Hi Erwin,

Nice work on the new CUDA broadphase - it's good see somebody using the code from our CUDA SDK for something useful!

There are a lot of ways you could optimize this code. Have you tried doing the scan using CUDPP? It might be a bit faster than doing it on the CPU (avoids the transfers).

Cheers,

Simon.

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Mon Nov 24, 2008 1:48 pm
by nadro
Hi,

Code: Select all

BT_DECLARE_ALIGNED_ALLOCATOR(); 
don't solve this problem.
How do you allocate a btRigidBody exactly?
I create class "CollisionPack" with CollisionShape, Body, Mass etc. and next I use it for my Entity class. When Entity is create I apply position, rotation and add Body from "CollisionPack" to physic world by 'addRigidBody'

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Tue Nov 25, 2008 12:15 am
by rponomarev
simesgreen wrote:Hi Erwin,

Nice work on the new CUDA broadphase - it's good see somebody using the code from our CUDA SDK for something useful!

There are a lot of ways you could optimize this code. Have you tried doing the scan using CUDPP? It might be a bit faster than doing it on the CPU (avoids the transfers).

Cheers,

Simon.
Hello Simon,

Thanks for the reply.
I plan to move more code to the CUDA side and the scan is definitely one of the candidates.
However I don't expect a big perfomance gain from it - now scan takes only a small (~1%) amount of time.
I will optimize the time-consuming code code first

Thanks again,
Roman Ponomarev

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Tue Nov 25, 2008 1:38 pm
by Enrico
Hi,

you have left some errors in the 2.73 package:
/data/bullet-2.73/Demos/ConstraintDemo/ConstraintDemo.cpp:35:1: warning: "M_PI" redefined
In file included from /data/bullet-2.73/src/LinearMath/btScalar.h:20,
from /data/bullet-2.73/src/LinearMath/btQuadWord.h:19,
from /data/bullet-2.73/src/LinearMath/btVector3.h:20,
from /data/bullet-2.73/src/BulletCollision/CollisionDispatch/btCollisionWorld.h:71,
from /data/bullet-2.73/src/btBulletCollisionCommon.h:22,
from /data/bullet-2.73/src/btBulletDynamicsCommon.h:20,
from /data/bullet-2.73/Demos/ConstraintDemo/ConstraintDemo.cpp:19:
/usr/include/math.h:355:1: warning: this is the location of the previous definition
/data/bullet-2.73/Demos/ConstraintDemo/ConstraintDemo.cpp:36:1: warning: "M_PI_2" redefined
/usr/include/math.h:356:1: warning: this is the location of the previous definition
M_PI is usually defined in math.h, so there is no need to define it anyway again...

Running on Red Hat 5 x86_64:
./autogen.sh
running aclocal
running libtool
libtool worked.
running automake
configure.ac: installing `./missing'
Demos/AllBulletDemos/Makefile.am: installing `./depcomp'
Extras/Makefile.am: installing `./compile'
src/Makefile.am:293: whitespace following trailing backslash
Makefile.am: installing `./COPYING'
running autoheader
running autoconf
configure.ac:120: error: possibly undefined macro: _AC_SRCDIRS
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autogen.sh complete
Then executing ./configure:
checking how to create a directory tree... mkdir -p
checking for install... /usr/bin/install -c
checking for doxygen... doxygen
checking for dot... dot
checking for perl5... no
checking for perl... perl
checking for perl5... (cached) perl
checking for TemplateToolkit... no
checking for ttree... no
checking how to disable C++ exceptions... -fno-exceptions
./configure: line 23155: syntax error near unexpected token `"."'
./configure: line 23155: ` _AC_SRCDIRS(".")'
cmake build compiles so far...

Re: Bullet 2.73 released: fast btCudaBroadphase

Posted: Wed Nov 26, 2008 2:42 pm
by diehard
Hey Erwin Coumans,
Please recognized another nice iPhone engine using Bullet, called sio2:
http://sio2interactive.com/

Join their development group for Bullet support:
http://code.google.com/p/sio2/

Re: Bullet 2.73 SP1 released: fast btCudaBroadphase, SSE sol

Posted: Fri Jul 08, 2011 9:04 am
by lika147
In this release CharacterDemo crash at startup. I also see problems with acces to btRigidBody from my classes. With 2.72 all works properly. I was compiled it internet marketing tips VC2008EE, and I tested on Vista x64 and Windows XP, on both systems I have errors. In Debug mode CharacterDemo is ok.