Commit Graph

56 Commits

Author SHA1 Message Date
Lunkhound
1c3686ca51 MultiThreaded Demo:
- fixing various race conditions throughout (usage of static vars, etc)
 - addition of a few lightweight mutexes (which are compiled out by default)
 - slight code rearrangement in discreteDynamicsWorld to facilitate multithreading
 - PoolAllocator::allocate() can now be called when pool is full without
     crashing (null pointer returned)
 - PoolAllocator allocate and freeMemory, are OPTIONALLY threadsafe
     (default is un-threadsafe)
 - CollisionDispatcher no longer checks if the pool allocator is full
     before calling allocate(), instead it just calls allocate() and
     checks if the return is null -- this avoids a race condition
 - SequentialImpulseConstraintSolver OPTIONALLY uses different logic in
     getOrInitSolverBody() to avoid a race condition with kinematic bodies
 - addition of 2 classes which together allow simulation islands to be run
   in parallel:
    - btSimulationIslandManagerMt
    - btDiscreteDynamicsWorldMt
 - MultiThreadedDemo example in the example browser demonstrating use of
   OpenMP, Microsoft PPL, and Intel TBB
 - use multithreading for other demos
 - benchmark demo: add parallel raycasting
2016-10-30 12:47:27 -07:00
Erwin Coumans
e2bdd7dbb1 fix more memory leaks, ImportURDFExample is now leak-free
eliminate all run-time memory allocation (except for mouse-pick/ray-intersection) in ImportURDFExample
2016-07-16 17:40:44 -07:00
Ola Røer Thorsen
75207c4839 fix for broken memmove used in btDbvt.h, issue 347. 2015-10-22 21:24:40 +02:00
Erwin Coumans
3da8dbce1c disable memmove in btDbvt
forgot to reset clock
2015-05-04 17:03:37 -07:00
Erwin Coumans
7a0288bf56 fix issue with btDbvt::collideOCL, related to memmove (needs further testing)
only enable OpenCL demo if flag --enable_experimental_opencl is passed to ExampleBrowser
2015-05-02 22:33:33 -07:00
erwin.coumans
73b217fb07 Apple contribution for OSX SSE and iOS NEON optimizations unit tests, thanks to Jordan Hubbard, Ian Ollmann and Hristo Hristov.
For OSX:
cd build
./premake_osx xcode4
for iOS:
cd build
./ios_build.sh
./ios_run.sh

Also integrated the branches/StackAllocation to make it easier to multi-thread collision detection in the near future. It avoids changing the btCollisionObject while performing collision detection.

As this is a large patch, some stuff might be temporarily broken, I'll keep an eye out on issues.
2012-06-07 00:56:30 +00:00
erwin.coumans
e1c9b67ef7 reduce dynamic memory allocations in btDbvt::rayTestInternal,
fixes Issue 574, thanks to Anton Breusov
2011-12-12 16:52:52 +00:00
erwin.coumans
a9556d0fd5 use _WIN32 instead of WIN32 (_WIN32 is a compiler built-in)
add virtual destructor to bFile
2010-02-06 18:50:45 +00:00
erwin.coumans
f9ad5cf587 fixes in serialization, should fix non-Windows platforms. 2010-01-30 21:31:56 +00:00
erwin.coumans
4280f54ccf Get rid of some warnings, mainly unused parameters/variables.
Thanks sparkprime for the patch, see http://code.google.com/p/bullet/issues/detail?id=330
2010-01-19 06:10:27 +00:00
erwin.coumans
ac3d52d81b bugfix in aabb expansion, causing the convexSweepTest to fail in certain cases
(when the AABB is not symmetric around the origin)

Thanks to fishboy82 for the report and fix:
See http://bulletphysics.org/Bullet/phpBB3/viewtopic.php?f=9&t=4484
http://code.google.com/p/bullet/issues/detail?id=322
2009-12-22 21:19:41 +00:00
erwin.coumans
82828745ea enable SIMD for Apple OSX Intel
compile fixes for _btGpu_computeGridSize undefined in libBulletMultiThreaded
http://code.google.com/p/bullet/issues/detail?id=246
2009-07-16 06:23:04 +00:00
erwin.coumans
40c73f327c + CMake build system fix under Windows: don't define _WINDOWS to allow Glut console demo to build properly
+ Allow user to enable useConvexConservativeDistanceUtil . Use dynamicsWorld->getDispatchInfo().m_useConvexConservativeDistanceUtil = true;
(see Demos/Benchmarks/Benchmark4 (convex objects falling down)
+ Fix for plane drawing (just wire-frame)
+ Gimpact: use collision margin of 0.07 for demo (because BULLET_TRIANGLE_COLLISION is used)
+ replace dot,cross,distance,angle,triple in btVector3 by btDot, btCross,btDistance,btAngle,btDistance to avoid naming conflicts
+ Some fixes in GJK penetration depth normal direction (broken in a previous commit)
+ fix in calculateDiffAxisAngleQuaternion to make ConvexConservativeDistanceUtil work properly
+ allow debug drawing to debug btContinuousConvexCollision
+ add comment/warning that btTriangleMesh::findOrAddVertex is an internal method, users should use addTriangle instead
2009-07-15 16:47:48 +00:00
erwin.coumans
badf723257 Replace all hardcoded 1e30(f) by BT_LARGE_FLOAT, defined in btScalar.h as 1e18(f) so that its square still fits in FLT_MAX
Thanks to Ole K. for reporting! http://code.google.com/p/bullet/issues/detail?id=206
2009-05-23 02:15:54 +00:00
erwin.coumans
8acadeb711 minor tweaks to demos: enable constraint debug drawing in AllBulletDemos, default constraint debugging size set to 0.3,
set svn:eol-style native for folder files
http://code.google.com/p/bullet/issues/detail?id=191
2009-02-18 22:52:03 +00:00
erwin.coumans
5698d6aed1 reset randseed in constraint solver for determinism
use BT_USE_SSE in btDbvt, defined in btScalar.h
2009-02-11 05:44:48 +00:00
erwin.coumans
24d1fea8b2 applied patches against warnings, thanks a lot Ole K.
http://code.google.com/p/bullet/issues/detail?id=165
http://code.google.com/p/bullet/issues/detail?id=164
http://code.google.com/p/bullet/issues/detail?id=166
http://code.google.com/p/bullet/issues/detail?id=167
2009-02-06 06:09:57 +00:00
erwin.coumans
c541414c84 disable btDbvt::collideTT with transform, it is unused and uses an invalid Intersect method. 2008-12-09 06:21:19 +00:00
erwin.coumans
6db1b932fd Make the btDbvtBroadphase deterministic/reproducable, by sorting the btBroadphasePair using unique ID, instead of proxy address.
The btAxisSweep3 didn't suffer from this issue, because proxies were always allocated in-order, as part of an array.
2008-12-08 20:16:29 +00:00
erwin.coumans
50344c4a23 Add support for broadphase acceleration of convex cast (re-use rayTest implementation with an added aabb min/max, zero for rays)
Add Concave Convexcast demo back in AllBulletDemos, and tweaked it a bit.
Fix view frustum of ForkLiftDemo (caused picking to fail)
Removed innerloop profiling for ray and convex casts, it hurts performance.
Set default #aabb's in CDTestFramework to 8192
2008-11-19 00:38:29 +00:00
erwin.coumans
9516e505a7 fix broken build
Add btCompoundShape export support for BulletColladaConverter. 
Thanks to JamesH for the report/request:
http://www.bulletphysics.com/Bullet/phpBB3/viewtopic.php?f=12&t=2840
2008-11-12 22:25:23 +00:00
erwin.coumans
5feea39803 Fix compilation for MSVC 6.0 for Bullet and COLLADA DOM.
Fix issues with btDbvt: use ATTRIBUTE_ALIGNED16
Removed several places where variable was declared within for statement: for (int i=0; should be int i; for (i=0
2008-11-12 18:37:05 +00:00
erwin.coumans
ff29cb5008 reduce the number of dynamic memory allocations again (using a persistentStack version in btDbvt) 2008-11-04 18:02:41 +00:00
erwin.coumans
807e979597 missed a local stack in btDbvt 2008-11-04 17:54:41 +00:00
erwin.coumans
8e51049359 Added btAxisSweep3::resetPool, to avoid non-determinism due to unsorted linked-list, thanks to Ole K., See http://code.google.com/p/bullet/issues/detail?id=126
Fixed recently introduced issue: can't re-use stack as member variable (to reduce memory allocs) in btDbvt, due to recursion.
remove btGjkEpa.* from Makefile.am, Makefile and CMakeLists.txt
avoid division-by-zero in ODE boxbox contact reduction
2008-11-04 09:37:31 +00:00
erwin.coumans
bcd0f48c28 some doxygen updates, added some comments to classes, fix broken links, rename some prefix some internal GIMPACT collision structures using (for example use GIM_AABB instead of BT_AAABB),
removed obsolete btGjkEpa (it was replaced by btGjkEpa2 ages ago)
2008-11-04 04:01:31 +00:00
erwin.coumans
2a871176d4 fix broken OS X build 2008-10-29 07:01:56 +00:00
erwin.coumans
487cc1cdf1 avoid a lot of dynamic allocations in btDbvt/btSoftBody (re-use stack)
add Maya 2009 to Dynamica msvc projectfiles
2008-10-29 06:27:40 +00:00
erwin.coumans
50930cec5c Some performance improvements and fixes related to btVector3 being aligned on SPU.
btQuantizedBvh has a version number, memory layout might be different now (due to aligned btVector3)
reorganized some data members of some classes, to reduce memory footprint
2008-10-29 02:45:43 +00:00
erwin.coumans
1ff6420ffb Use the add support for double and float triangle vertices. If it has a bad impact on performance, we can hide it behind an #ifdef for double precision vertex support.
Fix btConvexTriangleMeshShape::calculatePrincipalAxisTransform
Both thanks to Ole.

Use our own union to extract a scalar value from an SSE intrinsic (instead of relying on MSVC-only m128_u32
Thanks to BlindSide
2008-10-27 21:36:36 +00:00
erwin.coumans
e627f38a28 Removed ray-AABB slopes code again, we are not using it and it is archived in Subversion repo now. 2008-10-16 20:18:23 +00:00
erwin.coumans
675c45f42d some rayTest improvements in btDbvt::rayTestInternal, it avoids/reduces memory allocations during stack allocation (by sharing a persistent m_stack)
and rayTestInternal re-uses precomputed invRayDirection/signs.
also did some performance comparison with different ray-AABB test, from 
http://jgt.akpeters.com/papers/EisemannEtAl07/

In short: it is faster, but it is not clear how to cull ray segments using ray slopes: when rays starts inside the AABB, we get a negative t value, but negatives also get false t-values...
2008-10-16 20:00:47 +00:00
erwin.coumans
60ce828419 Autoformat selection for soft body, btDbvt related classes (no code change, just layout using Visual Studio) 2008-10-15 18:39:27 +00:00
erwin.coumans
cac172d422 Use consistent rayFrom/rayTo API for rayTest for btDbvt and btSoftBody, instead of rayCast/collideRAY(origin,direction). This means RayFromToCaster has a fraction [0..1] instead of distance [0..INF]
Renamed collideRay -> rayTest to reflect change to (rayFrom,rayTo) interface.
Re-use btRayAabb2 function from src/LinearMath/btAabbUtil2.h in btDbvt instead of duplicated implementation.
2008-10-15 18:30:35 +00:00
erwin.coumans
0ca2eef022 FIX: use btScalar instead of float, otherwise double precision build breaks
FIX: make Maya plugin compile for Maya 8.0
FIX: btDbvt SSE doesn't compile for double precision builds
2008-10-02 01:17:18 +00:00
rponom
486b172f58 Bug in constructor btHingeConstraint(body, pivot, axis) fixed. Build under MSVC 7.1 fixed 2008-09-19 21:10:01 +00:00
erwin.coumans
c9e5f2df05 fix 64-bit issue, can't cast void* to int. 2008-09-16 06:17:33 +00:00
id0x1234
a6f47f17d8 Fixed alignment issue in btDbvt::CollideTV 2008-09-12 02:39:33 +00:00
id0x1234
670d7d94fc Fixed SIMD compilation issues under msvc 7 2008-09-12 02:31:43 +00:00
erwin.coumans
bc8ff765b4 SSE gives compile errors on MSVC 7.1 2008-09-11 18:59:35 +00:00
id0x1234
8c6788ad6a Improved Dbvt speed slightly. 2008-09-11 11:23:55 +00:00
id0x1234
bb50a2038f (re)Enable SSE by default (using intrinsics) should compile fine under all Intel platforms. 2008-09-07 09:10:43 +00:00
erwin.coumans
103b98de73 disable SSE by default on btDbvt, it breaks build on Windows 64 bit and Win32 Intel compiler. 2008-09-06 16:58:18 +00:00
erwin.coumans
42ad559b2d Add some Doxygen comments for broadphase and linearmath classes. 2008-08-27 02:24:11 +00:00
id0x1234
79a1e5b8f4 - General performances improvement (25%) on insert/update/collideTT.
- ~30% additional performance improvement for win32 using SSE implementation for critical methods.
2008-08-13 04:46:01 +00:00
erwin.coumans
884a494412 make the source code compile with older compilers again (Visual Studio 2006 in particular)
renamed btDbvt::Volume to btDbvtVolume and btDbvt::Node to btDbvtNode to distinguish from btSoftBody::Node
2008-07-15 23:27:18 +00:00
john.mccutchan
31dfbf55e1 Compile fixes
Added getOwnsBvh to btBvhTriangleMeshShape
2008-07-10 23:22:29 +00:00
erwin.coumans
b66e5350d0 rename HasHit method to hasHit
rename AddSingleResult to addSingleResult
moved collision filtering for btCollisionWorld::rayTest and btCollisionWorld::convexSweepTest from argument to the callback needsCollision
2008-07-09 23:30:21 +00:00
erwin.coumans
9996da6f2d Update to btDbvt and btDbvtBroadphase, thanks to Nathanael Presson 2008-07-09 22:45:01 +00:00
rponom
6141a55f09 Added linear and angular motors for the slider constraint 2008-05-23 22:52:51 +00:00