Commit Graph

59 Commits

Author SHA1 Message Date
erwincoumans
677722bba3 support compound versus compound collision shape acceleration on GPU, using aabb tree versus aabb tree.
Remove constructor from b3Vector3,  to make it a POD type, so it can go into a union (and more compatible with OpenCL float4)
Use b3MakeVector3 instead of constructor
Share some code between C++ and GPU in a shared file: see b3TransformAabb2 in src/Bullet3Collision/BroadPhaseCollision/shared/b3Aabb.h
Improve PairBench a bit, show timings and #overlapping pairs.
Increase shadowmap default size to 8192x8192 (hope the GPU supports it)
2013-08-20 03:19:59 -07:00
erwin coumans
ef224370ab implement compound versus compound BVH acceleration (quantized tree-versus-tree, using subtrees and quantization) on host 2013-08-16 08:58:52 -07:00
erwin coumans
b32ae0c75c move some files to shared folders
use b3Aabb for compound vs compound on host (for testing, towards BVH)
2013-08-14 17:48:12 -07:00
erwincoumans
ac23dbc4be contact normal should point from B to A (to be consistent with Bullet 2.x)
stringify: pre-allocate bigger buffer (10MB, workaround)
2013-08-10 12:08:15 -07:00
erwincoumans
d158507c03 remove m_localPosA for now (it breaks NVIDIA OpenCL, copy of structs > 128 bytes) 2013-08-08 13:28:23 -07:00
erwincoumans
3bf003ace1 change lcpp Lua preprocessor, to keep #defines and comments, remove empty lines
remove duplicate data in b3Contact4 (now in btContact4Data shared between CPU/C++ and OpenCL)
OpenCL kernels use #include "Bullet3Collision/NarrowPhaseCollision/shared/b3Contact4Data.h"
Increase number of batches back to 250 (from 50), need to fix this hard coded number (see https://github.com/erwincoumans/bullet3/issues/12)
Work towards GJK/EPA, in addition to SAT/clipping (early on)
2013-08-08 12:24:09 -07:00
erwincoumans
906415429c added (and stripped) a simple C/C++ preprocessor (written in Lua), so the stringifier can handle the #include directive,
and embed the included files directly in the stringified files.
We need this, because we start sharing struct definitions and code between C/C++ and OpenCL (and potentially other languages)
preprocessor is from http://github.com/willsteel/lcpp
2013-08-01 21:05:19 -07:00
erwincoumans
34de49d8a4 add gjk/epa (host only), possibly improve convex-convex with many edge-edge tests
more preparation towards persistent/incremental contact cache
2013-07-31 23:22:43 -07:00
erwincoumans
7992ff816b use int4 for broadphase pair, it allows to store persistent information in the future
(contact cache, applied impulse/warm starting info etc)
2013-07-31 09:58:15 -07:00
erwincoumans
1c0fc6bc2d report when compound pair capacity is exceeded (and avoid crash)
add tetrahedron, reorganized demos
2013-07-30 17:00:50 -07:00
erwin coumans
310d31f3d5 tweaks to demos, add middle-mouse support, 2013-07-21 00:36:00 -07:00
erwincoumans
01fbe80f8f use int instead of void to avoid 64bit error 2013-07-19 07:10:38 -07:00
erwincoumans
733f9027fb Deterministic simulation for concave and compound collision shapes: added childShapeA/B to b3Contact4 + sort on them
Use tetrahedra instead of barrel for convex demo (until performance for edge-edge is improved)
Increased #overlapping pair capacity from 12 to 16 / objec
2013-07-17 22:42:50 -07:00
erwincoumans
ab125fbb6d implement GPU breakable constraints
add GPU fixed constraint
fix performance issue with concave meshes (didn't clear the number of concave-convex pairs, so it increased every frame)
2013-07-17 16:11:54 -07:00
erwincoumans
3beae80a73 prepare for GPU fixed constraint (not done yet) 2013-07-16 19:05:07 -07:00
erwincoumans
20f9e41ff0 remove some debug printf's from kernel (stringify doesn't handle it properly) 2013-07-15 10:36:02 -07:00
erwincoumans
a5d00c8219 add some clFinish for better profile timings
improved parallel batching, don't try to write for static objects,
this fixed a bug, when the hash of a static object was identical with hash of dynamic objects, causing it to be assigned a bogus 100+i batching number
The parallel batching is still not enabled, because we need to measure the batching size (todo)
2013-07-15 10:22:40 -07:00
erwincoumans
05ed1fdbcf revert to useNewBatchingKernel, the other one is broken (need to figure out why) 2013-07-15 01:06:04 -07:00
erwin coumans
1e31073f4b made the simulation deterministic
disable 'simdwidth' optimization for determinism (need to double-check)
made the spatial batching 3D
2013-07-14 19:16:33 -07:00
erwin coumans
4b293130bd Merge branch 'master' of https://github.com/erwincoumans/bullet3 2013-07-12 20:46:49 -07:00
erwin coumans
061f7173b8 compute best axis on host and OpenCL for 1-axis SAP, based on best variance 2013-07-12 20:46:43 -07:00
erwin coumans
0fcdd290f5 remove dynamic OpenCL allocations at run-time 2013-07-12 16:00:25 -07:00
erwin coumans
2aad8419b7 add support for picking, using point 2 point constraint
allow to remove constraints by unique id
added tiny wavefront loader, plan to use this instead of existing slow wavefront loader
2013-07-10 00:21:23 -07:00
erwin coumans
9610b369a3 fix constraint issue with b3GpuDynamicsWorld 2013-07-09 19:32:14 -07:00
erwin coumans
a3c2456c65 introduce b3GpuSolverConstraint and fix Windows build 2013-07-09 18:03:51 -07:00
erwincoumans
282e19171f fix Linux version of ConstraintDemo 2013-07-09 14:41:56 -07:00
erwin coumans
4a0d2847c4 allow to run each part of the GPU solver on CPU, for debugging purposes 2013-07-09 13:07:34 -07:00
erwin coumans
38bfcc859b fix linux build 2013-07-09 11:36:21 -07:00
erwin coumans
bd2cd7b2a7 remove clFinish and copyToHost from GPU joint solver, performance is looking better now. 2013-07-09 11:19:16 -07:00
erwin coumans
c4375a09e4 added GPU joint solver for non-contact constraints. Only point 2 point version for now, will add some other constraints soon (changes are very local) 2013-07-09 10:46:47 -07:00
erwin coumans
b8d5cecfe3 joint (non-contact constraint) solver iterations is now working on GPU, but overall slower because of data copy.
Will move joint setup to GPU, and then some benefit should be visible.
Don't use 64 alignment, it causes data structures size mismatch between cpu and gpu
2013-07-06 14:11:32 -07:00
erwin coumans
3ca4d68f3e added jointSolver.cl/h (not working yet) 2013-07-06 13:20:34 -07:00
erwin coumans
3a6e1ccff4 work towards GPU joint solver (non-contact constraints), not working yet. 2013-07-06 13:08:58 -07:00
erwin coumans
28f6e0fbd3 towards GPU joint (non-contact) constraint solving. The ConstraintDemo shows that CPU performance is very good, so not much performance win is to be expected. 2013-07-02 21:13:42 -07:00
erwin coumans
6d6ef5d3dc fixed many memory leaks
added working shadows, using basic shadow mapping
2013-06-30 23:19:14 -07:00
erwin coumans
330bf3ea09 start implementing ray-convex on GPU (work-in-progress) 2013-06-20 11:33:00 -07:00
erwin coumans
531af1b394 add ray-convex CPU implementation, make CPU raytest default for now
tweak/increase the b3Config values again, so it works better on the Macbook Retina GPU.
2013-06-20 00:29:09 -07:00
erwin coumans
a69ba48de4 Move b3Quickprof.* from Bullet 3.x src folder to btgui/Timing
The Bullet 3.x B3_PROFILE can be customized using b3SetCustomEnterProfileZoneFunc/b3SetCustomLeaveProfileZoneFunc defined in Bullet3Common/b3Logging,
so you can hook Bullet 3.x up to your profiler of choice.
The Demos3/BasicGpuDemo will show the Bullet 3.x timings inside the Bullet 2.x btQuickprof profiler.
2013-06-19 22:08:03 -07:00
erwin coumans
f10eb86f55 enable the GPU ray test in BasicGpuDemo, only for spheres at the moment 2013-06-19 00:12:06 -07:00
erwin coumans
481d54967f Fixes in raycast (against sphere), point 2 point constraint
Picking test works, holding shift in App_BasicGpuDemo_*
2013-06-18 19:33:45 -07:00
erwincoumans
9a92eecf10 allow larger amount of rigid bodies, dynamically increase b3Config limits
avoid crashes in instancing renderer if instance maximum is exceeded.
2013-06-17 17:05:01 -07:00
erwincoumans
561a44e5d8 Try to avoid crashes if memory allocations fail
Deal with cases exceeding allocations of bodies/shapes above the limits set in b3Config
(work-in-progress )
2013-06-17 15:55:41 -07:00
erwincoumans
e179d5882e Merge branch 'master' of https://github.com/erwincoumans/bullet3 2013-06-17 13:47:41 -07:00
erwincoumans
161c48d331 work-in-progress Bullet 3.x GPU raytest
work-in-progress P2P constraint for b3GpuDynamicsWorld
2013-06-17 13:47:35 -07:00
erwin coumans
31282ab85e don't crash if the maximum number of pairs is exceeded, but report an error using b3Error 2013-06-17 13:23:41 -07:00
erwin coumans
f73d11d896 tweak default values of b3Config.h so some laptop GPUs can run 128k scenes
return the result of resize
use size_t instead of int for btOpenCLArray
BasicInitialize demo will test how much memory can be allocated, using the btOpenCLArray
2013-06-14 12:10:16 -07:00
erwin coumans
100449d76f faster scene construction when not using instancing (avoid copy individual vertices/shapes to GPU, but do it afterwards in a batch), copy GPU data in 'writeAllBodiesToGpu' method
add option --no_instanced_collision_shapes, this only applies to the 2 benchmark screnes at the moment
always use the user specified b3Config file, so the settings can be set at runtime, not just at compile time
adjust default constants in b3Config (needs more tweaking, ideally at run-time)
2013-06-08 11:08:44 -07:00
erwin coumans
3f10082aa3 add missing rayCast kernel 2013-06-07 20:47:47 -07:00
erwincoumans
9fe48d887d b3GpuDynamicsWorld improvements:
apply forces
copy linear/angular velocity every frame at the CPU side, initial velocity works now
hook up setGravity
Note: the 'stepSimulation' for GPU only simulates a single simulation frame.
2013-06-06 22:01:06 -07:00
Erwin Coumans
a9d4184e2d fix Mac version of cloth rendering 2013-06-03 17:35:31 -07:00