ruby-bullet 0.0.2-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (943) hide show
  1. data/INSTALL.md +22 -0
  2. data/LICENSE +23 -0
  3. data/README.md +41 -0
  4. data/Rakefile +131 -0
  5. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btAxisSweep3.i +30 -0
  6. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseInterface.i +8 -0
  7. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btBroadphaseProxy.i +8 -0
  8. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.i +8 -0
  9. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvt.i +10 -0
  10. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDbvtBroadphase.i +8 -0
  11. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btDispatcher.i +8 -0
  12. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.i +10 -0
  13. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCache.i +8 -0
  14. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.i +8 -0
  15. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btQuantizedBvh.i +8 -0
  16. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/btSimpleBroadphase.i +8 -0
  17. data/bindings/bullet/interface/BulletCollision/BroadphaseCollision/local_btAxisSweep3Internal.h +191 -0
  18. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/SphereTriangleDetector.i +8 -0
  19. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.i +8 -0
  20. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.i +8 -0
  21. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.i +8 -0
  22. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btBoxBoxDetector.i +8 -0
  23. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionConfiguration.i +21 -0
  24. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionCreateFunc.i +8 -0
  25. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionDispatcher.i +24 -0
  26. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionObject.i +8 -0
  27. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCollisionWorld.i +82 -0
  28. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.i +8 -0
  29. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.i +8 -0
  30. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.i +8 -0
  31. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.i +8 -0
  32. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.i +8 -0
  33. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.i +8 -0
  34. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.i +8 -0
  35. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btGhostObject.i +8 -0
  36. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btInternalEdgeUtility.i +8 -0
  37. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btManifoldResult.i +8 -0
  38. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSimulationIslandManager.i +8 -0
  39. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.i +8 -0
  40. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.i +8 -0
  41. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.i +8 -0
  42. data/bindings/bullet/interface/BulletCollision/CollisionDispatch/btUnionFind.i +10 -0
  43. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBox2dShape.i +8 -0
  44. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBoxShape.i +22 -0
  45. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.i +8 -0
  46. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCapsuleShape.i +8 -0
  47. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionMargin.i +8 -0
  48. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCollisionShape.i +8 -0
  49. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCompoundShape.i +8 -0
  50. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConcaveShape.i +8 -0
  51. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConeShape.i +8 -0
  52. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvex2dShape.i +8 -0
  53. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexHullShape.i +8 -0
  54. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexInternalShape.i +8 -0
  55. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPointCloudShape.i +8 -0
  56. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexPolyhedron.i +8 -0
  57. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexShape.i +8 -0
  58. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.i +8 -0
  59. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btCylinderShape.i +8 -0
  60. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btEmptyShape.i +8 -0
  61. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.i +8 -0
  62. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMaterial.i +8 -0
  63. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMinkowskiSumShape.i +8 -0
  64. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultiSphereShape.i +8 -0
  65. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.i +8 -0
  66. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btOptimizedBvh.i +8 -0
  67. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btPolyhedralConvexShape.i +8 -0
  68. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.i +8 -0
  69. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btShapeHull.i +8 -0
  70. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btSphereShape.i +8 -0
  71. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStaticPlaneShape.i +8 -0
  72. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btStridingMeshInterface.i +8 -0
  73. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTetrahedronShape.i +8 -0
  74. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleBuffer.i +8 -0
  75. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleCallback.i +8 -0
  76. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.i +8 -0
  77. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.i +8 -0
  78. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleInfoMap.i +8 -0
  79. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleMeshShape.i +8 -0
  80. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btTriangleShape.i +8 -0
  81. data/bindings/bullet/interface/BulletCollision/CollisionShapes/btUniformScalingShape.i +8 -0
  82. data/bindings/bullet/interface/BulletCollision/Gimpact/btBoxCollision.i +8 -0
  83. data/bindings/bullet/interface/BulletCollision/Gimpact/btClipPolygon.i +8 -0
  84. data/bindings/bullet/interface/BulletCollision/Gimpact/btContactProcessing.i +8 -0
  85. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactBvh.i +8 -0
  86. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.i +8 -0
  87. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactMassUtil.i +8 -0
  88. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactQuantizedBvh.i +8 -0
  89. data/bindings/bullet/interface/BulletCollision/Gimpact/btGImpactShape.i +8 -0
  90. data/bindings/bullet/interface/BulletCollision/Gimpact/btGenericPoolAllocator.i +11 -0
  91. data/bindings/bullet/interface/BulletCollision/Gimpact/btGeometryOperations.i +8 -0
  92. data/bindings/bullet/interface/BulletCollision/Gimpact/btQuantization.i +8 -0
  93. data/bindings/bullet/interface/BulletCollision/Gimpact/btTriangleShapeEx.i +8 -0
  94. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.i +8 -0
  95. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexCast.i +8 -0
  96. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.i +8 -0
  97. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.i +11 -0
  98. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.i +8 -0
  99. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpa2.i +8 -0
  100. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.i +8 -0
  101. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.i +8 -0
  102. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btManifoldPoint.i +8 -0
  103. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.i +8 -0
  104. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPersistentManifold.i +8 -0
  105. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPointCollector.i +8 -0
  106. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.i +8 -0
  107. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btRaycastCallback.i +8 -0
  108. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.i +8 -0
  109. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.i +8 -0
  110. data/bindings/bullet/interface/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.i +8 -0
  111. data/bindings/bullet/interface/BulletDynamics/Character/btCharacterControllerInterface.i +8 -0
  112. data/bindings/bullet/interface/BulletDynamics/Character/btKinematicCharacterController.i +8 -0
  113. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConeTwistConstraint.i +8 -0
  114. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btConstraintSolver.i +8 -0
  115. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactConstraint.i +8 -0
  116. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btContactSolverInfo.i +8 -0
  117. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.i +8 -0
  118. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.i +8 -0
  119. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHinge2Constraint.i +8 -0
  120. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btHingeConstraint.i +8 -0
  121. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btJacobianEntry.i +8 -0
  122. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.i +8 -0
  123. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.i +21 -0
  124. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSliderConstraint.i +8 -0
  125. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.i +8 -0
  126. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverBody.i +8 -0
  127. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btSolverConstraint.i +8 -0
  128. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btTypedConstraint.i +8 -0
  129. data/bindings/bullet/interface/BulletDynamics/ConstraintSolver/btUniversalConstraint.i +8 -0
  130. data/bindings/bullet/interface/BulletDynamics/Dynamics/btActionInterface.i +8 -0
  131. data/bindings/bullet/interface/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.i +23 -0
  132. data/bindings/bullet/interface/BulletDynamics/Dynamics/btDynamicsWorld.i +37 -0
  133. data/bindings/bullet/interface/BulletDynamics/Dynamics/btRigidBody.i +20 -0
  134. data/bindings/bullet/interface/BulletDynamics/Dynamics/btSimpleDynamicsWorld.i +8 -0
  135. data/bindings/bullet/interface/BulletDynamics/Vehicle/btRaycastVehicle.i +12 -0
  136. data/bindings/bullet/interface/BulletDynamics/Vehicle/btVehicleRaycaster.i +8 -0
  137. data/bindings/bullet/interface/BulletDynamics/Vehicle/btWheelInfo.i +8 -0
  138. data/bindings/bullet/interface/BulletSoftBody/btDefaultSoftBodySolver.i +8 -0
  139. data/bindings/bullet/interface/BulletSoftBody/btSoftBody.i +8 -0
  140. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.i +8 -0
  141. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyData.i +8 -0
  142. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyHelpers.i +8 -0
  143. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyInternals.i +8 -0
  144. data/bindings/bullet/interface/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.i +8 -0
  145. data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolverVertexBuffer.i +8 -0
  146. data/bindings/bullet/interface/BulletSoftBody/btSoftBodySolvers.i +8 -0
  147. data/bindings/bullet/interface/BulletSoftBody/btSoftRigidCollisionAlgorithm.i +8 -0
  148. data/bindings/bullet/interface/BulletSoftBody/btSoftRigidDynamicsWorld.i +8 -0
  149. data/bindings/bullet/interface/BulletSoftBody/btSoftSoftCollisionAlgorithm.i +8 -0
  150. data/bindings/bullet/interface/BulletSoftBody/btSparseSDF.i +8 -0
  151. data/bindings/bullet/interface/LinearMath/btAabbUtil2.i +8 -0
  152. data/bindings/bullet/interface/LinearMath/btAlignedAllocator.i +8 -0
  153. data/bindings/bullet/interface/LinearMath/btAlignedObjectArray.i +8 -0
  154. data/bindings/bullet/interface/LinearMath/btConvexHull.i +8 -0
  155. data/bindings/bullet/interface/LinearMath/btConvexHullComputer.i +8 -0
  156. data/bindings/bullet/interface/LinearMath/btDefaultMotionState.i +10 -0
  157. data/bindings/bullet/interface/LinearMath/btGeometryUtil.i +10 -0
  158. data/bindings/bullet/interface/LinearMath/btGrahamScan2dConvexHull.i +8 -0
  159. data/bindings/bullet/interface/LinearMath/btHashMap.i +8 -0
  160. data/bindings/bullet/interface/LinearMath/btIDebugDraw.i +10 -0
  161. data/bindings/bullet/interface/LinearMath/btList.i +8 -0
  162. data/bindings/bullet/interface/LinearMath/btMatrix3x3.i +8 -0
  163. data/bindings/bullet/interface/LinearMath/btMinMax.i +8 -0
  164. data/bindings/bullet/interface/LinearMath/btMotionState.i +10 -0
  165. data/bindings/bullet/interface/LinearMath/btPoolAllocator.i +10 -0
  166. data/bindings/bullet/interface/LinearMath/btQuadWord.i +8 -0
  167. data/bindings/bullet/interface/LinearMath/btQuaternion.i +60 -0
  168. data/bindings/bullet/interface/LinearMath/btQuickprof.i +10 -0
  169. data/bindings/bullet/interface/LinearMath/btRandom.i +8 -0
  170. data/bindings/bullet/interface/LinearMath/btScalar.i +8 -0
  171. data/bindings/bullet/interface/LinearMath/btSerializer.i +10 -0
  172. data/bindings/bullet/interface/LinearMath/btStackAlloc.i +10 -0
  173. data/bindings/bullet/interface/LinearMath/btTransform.i +8 -0
  174. data/bindings/bullet/interface/LinearMath/btTransformUtil.i +8 -0
  175. data/bindings/bullet/interface/LinearMath/btVector3.i +42 -0
  176. data/bindings/bullet/interface/Makefile +19 -0
  177. data/bindings/bullet/interface/bullet.i +9 -0
  178. data/bindings/bullet/interface/bullet_all.i +186 -0
  179. data/bindings/bullet/interface/bullet_wrap.cpp +194161 -0
  180. data/bindings/bullet/interface/bullet_wrap.h +106 -0
  181. data/bindings/bullet/interface/bullet_wrap.o +0 -0
  182. data/bindings/bullet/src/TickListener.h +22 -0
  183. data/deps/include/bullet/Bullet-C-Api.h +176 -0
  184. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.cpp +37 -0
  185. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btAxisSweep3.h +1051 -0
  186. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseInterface.h +82 -0
  187. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp +17 -0
  188. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h +270 -0
  189. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.cpp +23 -0
  190. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h +80 -0
  191. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvt.cpp +1295 -0
  192. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvt.h +1257 -0
  193. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp +796 -0
  194. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDbvtBroadphase.h +146 -0
  195. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDispatcher.cpp +22 -0
  196. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btDispatcher.h +110 -0
  197. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp +489 -0
  198. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.h +151 -0
  199. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp +633 -0
  200. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCache.h +469 -0
  201. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btOverlappingPairCallback.h +40 -0
  202. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.cpp +1375 -0
  203. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btQuantizedBvh.h +579 -0
  204. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.cpp +349 -0
  205. data/deps/include/bullet/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +171 -0
  206. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btAxisSweep3.obj +0 -0
  207. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btBroadphaseProxy.obj +0 -0
  208. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btCollisionAlgorithm.obj +0 -0
  209. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btDbvt.obj +0 -0
  210. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btDbvtBroadphase.obj +0 -0
  211. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btDispatcher.obj +0 -0
  212. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btMultiSapBroadphase.obj +0 -0
  213. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btOverlappingPairCache.obj +0 -0
  214. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btQuantizedBvh.obj +0 -0
  215. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/BroadphaseCollision/btSimpleBroadphase.obj +0 -0
  216. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CXX.includecache +2574 -0
  217. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/SphereTriangleDetector.obj +0 -0
  218. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btActivatingCollisionAlgorithm.obj +0 -0
  219. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.obj +0 -0
  220. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btBoxBoxCollisionAlgorithm.obj +0 -0
  221. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btBoxBoxDetector.obj +0 -0
  222. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCollisionDispatcher.obj +0 -0
  223. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCollisionObject.obj +0 -0
  224. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCollisionWorld.obj +0 -0
  225. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btCompoundCollisionAlgorithm.obj +0 -0
  226. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvex2dConvex2dAlgorithm.obj +0 -0
  227. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvexConcaveCollisionAlgorithm.obj +0 -0
  228. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvexConvexAlgorithm.obj +0 -0
  229. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btConvexPlaneCollisionAlgorithm.obj +0 -0
  230. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btDefaultCollisionConfiguration.obj +0 -0
  231. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btEmptyCollisionAlgorithm.obj +0 -0
  232. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btGhostObject.obj +0 -0
  233. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btInternalEdgeUtility.obj +0 -0
  234. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btManifoldResult.obj +0 -0
  235. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSimulationIslandManager.obj +0 -0
  236. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSphereBoxCollisionAlgorithm.obj +0 -0
  237. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSphereSphereCollisionAlgorithm.obj +0 -0
  238. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btSphereTriangleCollisionAlgorithm.obj +0 -0
  239. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionDispatch/btUnionFind.obj +0 -0
  240. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btBox2dShape.obj +0 -0
  241. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btBoxShape.obj +0 -0
  242. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btBvhTriangleMeshShape.obj +0 -0
  243. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCapsuleShape.obj +0 -0
  244. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCollisionShape.obj +0 -0
  245. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCompoundShape.obj +0 -0
  246. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConcaveShape.obj +0 -0
  247. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConeShape.obj +0 -0
  248. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvex2dShape.obj +0 -0
  249. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexHullShape.obj +0 -0
  250. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexInternalShape.obj +0 -0
  251. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexPointCloudShape.obj +0 -0
  252. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexPolyhedron.obj +0 -0
  253. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexShape.obj +0 -0
  254. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btConvexTriangleMeshShape.obj +0 -0
  255. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btCylinderShape.obj +0 -0
  256. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btEmptyShape.obj +0 -0
  257. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btHeightfieldTerrainShape.obj +0 -0
  258. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btMinkowskiSumShape.obj +0 -0
  259. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btMultiSphereShape.obj +0 -0
  260. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btMultimaterialTriangleMeshShape.obj +0 -0
  261. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btOptimizedBvh.obj +0 -0
  262. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btPolyhedralConvexShape.obj +0 -0
  263. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btScaledBvhTriangleMeshShape.obj +0 -0
  264. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btShapeHull.obj +0 -0
  265. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btSphereShape.obj +0 -0
  266. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btStaticPlaneShape.obj +0 -0
  267. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btStridingMeshInterface.obj +0 -0
  268. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTetrahedronShape.obj +0 -0
  269. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleBuffer.obj +0 -0
  270. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleCallback.obj +0 -0
  271. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleIndexVertexArray.obj +0 -0
  272. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleIndexVertexMaterialArray.obj +0 -0
  273. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleMesh.obj +0 -0
  274. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btTriangleMeshShape.obj +0 -0
  275. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/CollisionShapes/btUniformScalingShape.obj +0 -0
  276. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/DependInfo.cmake +121 -0
  277. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btContactProcessing.obj +0 -0
  278. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactBvh.obj +0 -0
  279. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactCollisionAlgorithm.obj +0 -0
  280. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactQuantizedBvh.obj +0 -0
  281. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGImpactShape.obj +0 -0
  282. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btGenericPoolAllocator.obj +0 -0
  283. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/btTriangleShapeEx.obj +0 -0
  284. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_box_set.obj +0 -0
  285. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_contact.obj +0 -0
  286. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_memory.obj +0 -0
  287. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/Gimpact/gim_tri_collision.obj +0 -0
  288. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btContinuousConvexCollision.obj +0 -0
  289. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btConvexCast.obj +0 -0
  290. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkConvexCast.obj +0 -0
  291. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkEpa2.obj +0 -0
  292. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.obj +0 -0
  293. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btGjkPairDetector.obj +0 -0
  294. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.obj +0 -0
  295. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btPersistentManifold.obj +0 -0
  296. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btPolyhedralContactClipping.obj +0 -0
  297. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btRaycastCallback.obj +0 -0
  298. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btSubSimplexConvexCast.obj +0 -0
  299. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/NarrowPhaseCollision/btVoronoiSimplexSolver.obj +0 -0
  300. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/build.make +2561 -0
  301. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/cmake_clean.cmake +101 -0
  302. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/cmake_clean_target.cmake +3 -0
  303. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/depend.internal +2058 -0
  304. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/depend.make +2058 -0
  305. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/flags.make +8 -0
  306. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/includes_CXX.rsp +1 -0
  307. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/link.txt +2 -0
  308. data/deps/include/bullet/BulletCollision/CMakeFiles/BulletCollision.dir/progress.make +93 -0
  309. data/deps/include/bullet/BulletCollision/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  310. data/deps/include/bullet/BulletCollision/CMakeFiles/progress.marks +1 -0
  311. data/deps/include/bullet/BulletCollision/CMakeLists.txt +279 -0
  312. data/deps/include/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.cpp +201 -0
  313. data/deps/include/bullet/BulletCollision/CollisionDispatch/SphereTriangleDetector.h +51 -0
  314. data/deps/include/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.cpp +47 -0
  315. data/deps/include/bullet/BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h +36 -0
  316. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.cpp +435 -0
  317. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBox2dBox2dCollisionAlgorithm.h +66 -0
  318. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.cpp +85 -0
  319. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxCollisionAlgorithm.h +66 -0
  320. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.cpp +718 -0
  321. data/deps/include/bullet/BulletCollision/CollisionDispatch/btBoxBoxDetector.h +44 -0
  322. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionConfiguration.h +48 -0
  323. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionCreateFunc.h +45 -0
  324. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.cpp +310 -0
  325. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionDispatcher.h +172 -0
  326. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.cpp +116 -0
  327. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionObject.h +524 -0
  328. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.cpp +1518 -0
  329. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCollisionWorld.h +509 -0
  330. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.cpp +353 -0
  331. data/deps/include/bullet/BulletCollision/CollisionDispatch/btCompoundCollisionAlgorithm.h +86 -0
  332. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.cpp +247 -0
  333. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvex2dConvex2dAlgorithm.h +95 -0
  334. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.cpp +312 -0
  335. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConcaveCollisionAlgorithm.h +116 -0
  336. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp +739 -0
  337. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.h +109 -0
  338. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.cpp +173 -0
  339. data/deps/include/bullet/BulletCollision/CollisionDispatch/btConvexPlaneCollisionAlgorithm.h +84 -0
  340. data/deps/include/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.cpp +309 -0
  341. data/deps/include/bullet/BulletCollision/CollisionDispatch/btDefaultCollisionConfiguration.h +137 -0
  342. data/deps/include/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.cpp +34 -0
  343. data/deps/include/bullet/BulletCollision/CollisionDispatch/btEmptyCollisionAlgorithm.h +54 -0
  344. data/deps/include/bullet/BulletCollision/CollisionDispatch/btGhostObject.cpp +171 -0
  345. data/deps/include/bullet/BulletCollision/CollisionDispatch/btGhostObject.h +175 -0
  346. data/deps/include/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.cpp +842 -0
  347. data/deps/include/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h +46 -0
  348. data/deps/include/bullet/BulletCollision/CollisionDispatch/btManifoldResult.cpp +135 -0
  349. data/deps/include/bullet/BulletCollision/CollisionDispatch/btManifoldResult.h +128 -0
  350. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp +450 -0
  351. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSimulationIslandManager.h +81 -0
  352. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.cpp +260 -0
  353. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereBoxCollisionAlgorithm.h +75 -0
  354. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.cpp +105 -0
  355. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereSphereCollisionAlgorithm.h +66 -0
  356. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.cpp +84 -0
  357. data/deps/include/bullet/BulletCollision/CollisionDispatch/btSphereTriangleCollisionAlgorithm.h +69 -0
  358. data/deps/include/bullet/BulletCollision/CollisionDispatch/btUnionFind.cpp +82 -0
  359. data/deps/include/bullet/BulletCollision/CollisionDispatch/btUnionFind.h +129 -0
  360. data/deps/include/bullet/BulletCollision/CollisionShapes/btBox2dShape.cpp +42 -0
  361. data/deps/include/bullet/BulletCollision/CollisionShapes/btBox2dShape.h +369 -0
  362. data/deps/include/bullet/BulletCollision/CollisionShapes/btBoxShape.cpp +51 -0
  363. data/deps/include/bullet/BulletCollision/CollisionShapes/btBoxShape.h +312 -0
  364. data/deps/include/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.cpp +466 -0
  365. data/deps/include/bullet/BulletCollision/CollisionShapes/btBvhTriangleMeshShape.h +139 -0
  366. data/deps/include/bullet/BulletCollision/CollisionShapes/btCapsuleShape.cpp +171 -0
  367. data/deps/include/bullet/BulletCollision/CollisionShapes/btCapsuleShape.h +173 -0
  368. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionMargin.h +27 -0
  369. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionShape.cpp +119 -0
  370. data/deps/include/bullet/BulletCollision/CollisionShapes/btCollisionShape.h +150 -0
  371. data/deps/include/bullet/BulletCollision/CollisionShapes/btCompoundShape.cpp +356 -0
  372. data/deps/include/bullet/BulletCollision/CollisionShapes/btCompoundShape.h +212 -0
  373. data/deps/include/bullet/BulletCollision/CollisionShapes/btConcaveShape.cpp +27 -0
  374. data/deps/include/bullet/BulletCollision/CollisionShapes/btConcaveShape.h +60 -0
  375. data/deps/include/bullet/BulletCollision/CollisionShapes/btConeShape.cpp +143 -0
  376. data/deps/include/bullet/BulletCollision/CollisionShapes/btConeShape.h +103 -0
  377. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvex2dShape.cpp +92 -0
  378. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvex2dShape.h +80 -0
  379. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexHullShape.cpp +255 -0
  380. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexHullShape.h +122 -0
  381. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.cpp +151 -0
  382. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexInternalShape.h +224 -0
  383. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.cpp +157 -0
  384. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPointCloudShape.h +105 -0
  385. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.cpp +296 -0
  386. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexPolyhedron.h +62 -0
  387. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexShape.cpp +446 -0
  388. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexShape.h +84 -0
  389. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.cpp +315 -0
  390. data/deps/include/bullet/BulletCollision/CollisionShapes/btConvexTriangleMeshShape.h +75 -0
  391. data/deps/include/bullet/BulletCollision/CollisionShapes/btCylinderShape.cpp +281 -0
  392. data/deps/include/bullet/BulletCollision/CollisionShapes/btCylinderShape.h +200 -0
  393. data/deps/include/bullet/BulletCollision/CollisionShapes/btEmptyShape.cpp +50 -0
  394. data/deps/include/bullet/BulletCollision/CollisionShapes/btEmptyShape.h +70 -0
  395. data/deps/include/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp +411 -0
  396. data/deps/include/bullet/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.h +161 -0
  397. data/deps/include/bullet/BulletCollision/CollisionShapes/btMaterial.h +35 -0
  398. data/deps/include/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.cpp +60 -0
  399. data/deps/include/bullet/BulletCollision/CollisionShapes/btMinkowskiSumShape.h +60 -0
  400. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.cpp +167 -0
  401. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultiSphereShape.h +99 -0
  402. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.cpp +45 -0
  403. data/deps/include/bullet/BulletCollision/CollisionShapes/btMultimaterialTriangleMeshShape.h +120 -0
  404. data/deps/include/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.cpp +391 -0
  405. data/deps/include/bullet/BulletCollision/CollisionShapes/btOptimizedBvh.h +65 -0
  406. data/deps/include/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.cpp +475 -0
  407. data/deps/include/bullet/BulletCollision/CollisionShapes/btPolyhedralConvexShape.h +112 -0
  408. data/deps/include/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp +123 -0
  409. data/deps/include/bullet/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h +93 -0
  410. data/deps/include/bullet/BulletCollision/CollisionShapes/btShapeHull.cpp +170 -0
  411. data/deps/include/bullet/BulletCollision/CollisionShapes/btShapeHull.h +59 -0
  412. data/deps/include/bullet/BulletCollision/CollisionShapes/btSphereShape.cpp +71 -0
  413. data/deps/include/bullet/BulletCollision/CollisionShapes/btSphereShape.h +73 -0
  414. data/deps/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.cpp +107 -0
  415. data/deps/include/bullet/BulletCollision/CollisionShapes/btStaticPlaneShape.h +103 -0
  416. data/deps/include/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.cpp +381 -0
  417. data/deps/include/bullet/BulletCollision/CollisionShapes/btStridingMeshInterface.h +162 -0
  418. data/deps/include/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.cpp +218 -0
  419. data/deps/include/bullet/BulletCollision/CollisionShapes/btTetrahedronShape.h +74 -0
  420. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.cpp +35 -0
  421. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleBuffer.h +69 -0
  422. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleCallback.cpp +28 -0
  423. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleCallback.h +42 -0
  424. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.cpp +95 -0
  425. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h +133 -0
  426. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.cpp +86 -0
  427. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleIndexVertexMaterialArray.h +84 -0
  428. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleInfoMap.h +241 -0
  429. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMesh.cpp +140 -0
  430. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMesh.h +69 -0
  431. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp +211 -0
  432. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleMeshShape.h +89 -0
  433. data/deps/include/bullet/BulletCollision/CollisionShapes/btTriangleShape.h +182 -0
  434. data/deps/include/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.cpp +160 -0
  435. data/deps/include/bullet/BulletCollision/CollisionShapes/btUniformScalingShape.h +87 -0
  436. data/deps/include/bullet/BulletCollision/Doxyfile +746 -0
  437. data/deps/include/bullet/BulletCollision/Gimpact/btBoxCollision.h +647 -0
  438. data/deps/include/bullet/BulletCollision/Gimpact/btClipPolygon.h +182 -0
  439. data/deps/include/bullet/BulletCollision/Gimpact/btContactProcessing.cpp +181 -0
  440. data/deps/include/bullet/BulletCollision/Gimpact/btContactProcessing.h +145 -0
  441. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactBvh.cpp +498 -0
  442. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactBvh.h +396 -0
  443. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp +904 -0
  444. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h +306 -0
  445. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactMassUtil.h +60 -0
  446. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp +528 -0
  447. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactQuantizedBvh.h +372 -0
  448. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactShape.cpp +203 -0
  449. data/deps/include/bullet/BulletCollision/Gimpact/btGImpactShape.h +1171 -0
  450. data/deps/include/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.cpp +283 -0
  451. data/deps/include/bullet/BulletCollision/Gimpact/btGenericPoolAllocator.h +163 -0
  452. data/deps/include/bullet/BulletCollision/Gimpact/btGeometryOperations.h +212 -0
  453. data/deps/include/bullet/BulletCollision/Gimpact/btQuantization.h +88 -0
  454. data/deps/include/bullet/BulletCollision/Gimpact/btTriangleShapeEx.cpp +218 -0
  455. data/deps/include/bullet/BulletCollision/Gimpact/btTriangleShapeEx.h +180 -0
  456. data/deps/include/bullet/BulletCollision/Gimpact/gim_array.h +326 -0
  457. data/deps/include/bullet/BulletCollision/Gimpact/gim_basic_geometry_operations.h +543 -0
  458. data/deps/include/bullet/BulletCollision/Gimpact/gim_bitset.h +123 -0
  459. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_collision.h +590 -0
  460. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_set.cpp +182 -0
  461. data/deps/include/bullet/BulletCollision/Gimpact/gim_box_set.h +674 -0
  462. data/deps/include/bullet/BulletCollision/Gimpact/gim_clip_polygon.h +210 -0
  463. data/deps/include/bullet/BulletCollision/Gimpact/gim_contact.cpp +146 -0
  464. data/deps/include/bullet/BulletCollision/Gimpact/gim_contact.h +164 -0
  465. data/deps/include/bullet/BulletCollision/Gimpact/gim_geom_types.h +97 -0
  466. data/deps/include/bullet/BulletCollision/Gimpact/gim_geometry.h +42 -0
  467. data/deps/include/bullet/BulletCollision/Gimpact/gim_hash_table.h +902 -0
  468. data/deps/include/bullet/BulletCollision/Gimpact/gim_linear_math.h +1573 -0
  469. data/deps/include/bullet/BulletCollision/Gimpact/gim_math.h +157 -0
  470. data/deps/include/bullet/BulletCollision/Gimpact/gim_memory.cpp +135 -0
  471. data/deps/include/bullet/BulletCollision/Gimpact/gim_memory.h +190 -0
  472. data/deps/include/bullet/BulletCollision/Gimpact/gim_radixsort.h +406 -0
  473. data/deps/include/bullet/BulletCollision/Gimpact/gim_tri_collision.cpp +640 -0
  474. data/deps/include/bullet/BulletCollision/Gimpact/gim_tri_collision.h +379 -0
  475. data/deps/include/bullet/BulletCollision/Makefile +1793 -0
  476. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.cpp +243 -0
  477. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btContinuousConvexCollision.h +59 -0
  478. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.cpp +20 -0
  479. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexCast.h +73 -0
  480. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btConvexPenetrationDepthSolver.h +42 -0
  481. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btDiscreteCollisionDetectorInterface.h +91 -0
  482. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.cpp +176 -0
  483. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkConvexCast.h +50 -0
  484. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.cpp +989 -0
  485. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpa2.h +75 -0
  486. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.cpp +66 -0
  487. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h +43 -0
  488. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.cpp +457 -0
  489. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btGjkPairDetector.h +103 -0
  490. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btManifoldPoint.h +158 -0
  491. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.cpp +362 -0
  492. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h +40 -0
  493. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.cpp +302 -0
  494. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPersistentManifold.h +228 -0
  495. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPointCollector.h +64 -0
  496. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.cpp +440 -0
  497. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btPolyhedralContactClipping.h +46 -0
  498. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp +177 -0
  499. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btRaycastCallback.h +72 -0
  500. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSimplexSolverInterface.h +63 -0
  501. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.cpp +160 -0
  502. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btSubSimplexConvexCast.h +50 -0
  503. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.cpp +609 -0
  504. data/deps/include/bullet/BulletCollision/NarrowPhaseCollision/btVoronoiSimplexSolver.h +179 -0
  505. data/deps/include/bullet/BulletCollision/cmake_install.cmake +29 -0
  506. data/deps/include/bullet/BulletCollision/ibmsdk/Makefile +112 -0
  507. data/deps/include/bullet/BulletCollision/premake4.lua +11 -0
  508. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/CXX.includecache +1466 -0
  509. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Character/btKinematicCharacterController.obj +0 -0
  510. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btConeTwistConstraint.obj +0 -0
  511. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btContactConstraint.obj +0 -0
  512. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btGeneric6DofConstraint.obj +0 -0
  513. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btGeneric6DofSpringConstraint.obj +0 -0
  514. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btHinge2Constraint.obj +0 -0
  515. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btHingeConstraint.obj +0 -0
  516. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btPoint2PointConstraint.obj +0 -0
  517. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btSequentialImpulseConstraintSolver.obj +0 -0
  518. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btSliderConstraint.obj +0 -0
  519. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btSolve2LinearConstraint.obj +0 -0
  520. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btTypedConstraint.obj +0 -0
  521. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/ConstraintSolver/btUniversalConstraint.obj +0 -0
  522. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/DependInfo.cmake +48 -0
  523. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/Bullet-C-API.obj +0 -0
  524. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/btDiscreteDynamicsWorld.obj +0 -0
  525. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/btRigidBody.obj +0 -0
  526. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Dynamics/btSimpleDynamicsWorld.obj +0 -0
  527. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Vehicle/btRaycastVehicle.obj +0 -0
  528. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/Vehicle/btWheelInfo.obj +0 -0
  529. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/build.make +590 -0
  530. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/cmake_clean.cmake +28 -0
  531. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/cmake_clean_target.cmake +3 -0
  532. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/depend.internal +601 -0
  533. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/depend.make +601 -0
  534. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/flags.make +8 -0
  535. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/includes_CXX.rsp +1 -0
  536. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/link.txt +2 -0
  537. data/deps/include/bullet/BulletDynamics/CMakeFiles/BulletDynamics.dir/progress.make +20 -0
  538. data/deps/include/bullet/BulletDynamics/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  539. data/deps/include/bullet/BulletDynamics/CMakeFiles/progress.marks +1 -0
  540. data/deps/include/bullet/BulletDynamics/CMakeLists.txt +112 -0
  541. data/deps/include/bullet/BulletDynamics/Character/btCharacterControllerInterface.h +46 -0
  542. data/deps/include/bullet/BulletDynamics/Character/btKinematicCharacterController.cpp +641 -0
  543. data/deps/include/bullet/BulletDynamics/Character/btKinematicCharacterController.h +163 -0
  544. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp +1132 -0
  545. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConeTwistConstraint.h +346 -0
  546. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btConstraintSolver.h +52 -0
  547. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.cpp +178 -0
  548. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactConstraint.h +71 -0
  549. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btContactSolverInfo.h +87 -0
  550. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.cpp +1078 -0
  551. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofConstraint.h +614 -0
  552. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.cpp +185 -0
  553. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btGeneric6DofSpringConstraint.h +99 -0
  554. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.cpp +66 -0
  555. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHinge2Constraint.h +58 -0
  556. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.cpp +1034 -0
  557. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btHingeConstraint.h +381 -0
  558. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btJacobianEntry.h +156 -0
  559. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.cpp +230 -0
  560. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btPoint2PointConstraint.h +161 -0
  561. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp +1269 -0
  562. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.h +130 -0
  563. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.cpp +857 -0
  564. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSliderConstraint.h +333 -0
  565. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.cpp +255 -0
  566. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolve2LinearConstraint.h +107 -0
  567. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolverBody.h +191 -0
  568. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btSolverConstraint.h +98 -0
  569. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.cpp +220 -0
  570. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btTypedConstraint.h +452 -0
  571. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.cpp +87 -0
  572. data/deps/include/bullet/BulletDynamics/ConstraintSolver/btUniversalConstraint.h +62 -0
  573. data/deps/include/bullet/BulletDynamics/Dynamics/Bullet-C-API.cpp +405 -0
  574. data/deps/include/bullet/BulletDynamics/Dynamics/btActionInterface.h +46 -0
  575. data/deps/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +1257 -0
  576. data/deps/include/bullet/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h +203 -0
  577. data/deps/include/bullet/BulletDynamics/Dynamics/btDynamicsWorld.h +151 -0
  578. data/deps/include/bullet/BulletDynamics/Dynamics/btRigidBody.cpp +403 -0
  579. data/deps/include/bullet/BulletDynamics/Dynamics/btRigidBody.h +691 -0
  580. data/deps/include/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp +280 -0
  581. data/deps/include/bullet/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h +89 -0
  582. data/deps/include/bullet/BulletDynamics/Makefile +479 -0
  583. data/deps/include/bullet/BulletDynamics/Vehicle/btRaycastVehicle.cpp +771 -0
  584. data/deps/include/bullet/BulletDynamics/Vehicle/btRaycastVehicle.h +236 -0
  585. data/deps/include/bullet/BulletDynamics/Vehicle/btVehicleRaycaster.h +35 -0
  586. data/deps/include/bullet/BulletDynamics/Vehicle/btWheelInfo.cpp +56 -0
  587. data/deps/include/bullet/BulletDynamics/Vehicle/btWheelInfo.h +119 -0
  588. data/deps/include/bullet/BulletDynamics/cmake_install.cmake +29 -0
  589. data/deps/include/bullet/BulletDynamics/ibmsdk/Makefile +53 -0
  590. data/deps/include/bullet/BulletDynamics/premake4.lua +11 -0
  591. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/CXX.includecache +1480 -0
  592. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/DependInfo.cmake +47 -0
  593. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/PosixThreadSupport.obj +0 -0
  594. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SequentialThreadSupport.obj +0 -0
  595. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuCollisionObjectWrapper.obj +0 -0
  596. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuCollisionTaskProcess.obj +0 -0
  597. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuContactManifoldCollisionAlgorithm.obj +0 -0
  598. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuFakeDma.obj +0 -0
  599. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuGatheringCollisionDispatcher.obj +0 -0
  600. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuLibspe2Support.obj +0 -0
  601. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.obj +0 -0
  602. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuContactResult.obj +0 -0
  603. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.obj +0 -0
  604. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.obj +0 -0
  605. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuNarrowPhaseCollisionTask/boxBoxDistance.obj +0 -0
  606. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/SpuSampleTaskProcess.obj +0 -0
  607. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/Win32ThreadSupport.obj +0 -0
  608. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/btGpu3DGridBroadphase.obj +0 -0
  609. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/btParallelConstraintSolver.obj +0 -0
  610. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/btThreadSupportInterface.obj +0 -0
  611. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/build.make +563 -0
  612. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/cmake_clean.cmake +27 -0
  613. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/cmake_clean_target.cmake +3 -0
  614. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/depend.internal +690 -0
  615. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/depend.make +690 -0
  616. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/flags.make +8 -0
  617. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/includes_CXX.rsp +1 -0
  618. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/link.txt +2 -0
  619. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/BulletMultiThreaded.dir/progress.make +19 -0
  620. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  621. data/deps/include/bullet/BulletMultiThreaded/CMakeFiles/progress.marks +1 -0
  622. data/deps/include/bullet/BulletMultiThreaded/CMakeLists.txt +123 -0
  623. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  624. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/CMakeFiles/progress.marks +1 -0
  625. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/CMakeLists.txt +13 -0
  626. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/CMakeLists.txt +83 -0
  627. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/ApplyForces.hlsl +95 -0
  628. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/ComputeBounds.hlsl +83 -0
  629. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/Integrate.hlsl +41 -0
  630. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/OutputToVertexArray.hlsl +63 -0
  631. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/PrepareLinks.hlsl +44 -0
  632. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/SolvePositions.hlsl +55 -0
  633. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/SolvePositionsSIMDBatched.hlsl +147 -0
  634. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdateConstants.hlsl +48 -0
  635. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdateNodes.hlsl +49 -0
  636. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdateNormals.hlsl +98 -0
  637. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdatePositions.hlsl +44 -0
  638. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/UpdatePositionsFromVelocities.hlsl +35 -0
  639. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/VSolveLinks.hlsl +55 -0
  640. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/solveCollisionsAndUpdateVelocities.hlsl +170 -0
  641. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/HLSL/solveCollisionsAndUpdateVelocitiesSIMDBatched.hlsl +191 -0
  642. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverBuffer_DX11.h +323 -0
  643. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11.h +103 -0
  644. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverLinkData_DX11SIMDAware.h +173 -0
  645. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverTriangleData_DX11.h +96 -0
  646. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexBuffer_DX11.h +107 -0
  647. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolverVertexData_DX11.h +63 -0
  648. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.cpp +2236 -0
  649. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11.h +691 -0
  650. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.cpp +1051 -0
  651. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/btSoftBodySolver_DX11SIMDAware.h +81 -0
  652. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/DX11/premake4.lua +23 -0
  653. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/Makefile +122 -0
  654. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD/CMakeLists.txt +62 -0
  655. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/AMD/premake4.lua +27 -0
  656. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Apple/CMakeLists.txt +77 -0
  657. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  658. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/CMakeFiles/progress.marks +1 -0
  659. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/CMakeLists.txt +17 -0
  660. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel/CMakeLists.txt +82 -0
  661. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Intel/premake4.lua +27 -0
  662. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/Makefile +122 -0
  663. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/CXX.includecache +556 -0
  664. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/DependInfo.cmake +31 -0
  665. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/__/btSoftBodySolver_OpenCL.obj +0 -0
  666. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/build.make +104 -0
  667. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/cmake_clean.cmake +10 -0
  668. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/cmake_clean_target.cmake +3 -0
  669. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/depend.internal +76 -0
  670. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/depend.make +76 -0
  671. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/flags.make +8 -0
  672. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/includes_CXX.rsp +1 -0
  673. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/link.txt +2 -0
  674. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/BulletSoftBodySolvers_OpenCL_Mini.dir/progress.make +2 -0
  675. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  676. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeFiles/progress.marks +1 -0
  677. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/CMakeLists.txt +75 -0
  678. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/Makefile +155 -0
  679. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/MiniCLTaskWrap.cpp +249 -0
  680. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/MiniCL/cmake_install.cmake +29 -0
  681. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia/CMakeLists.txt +81 -0
  682. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/NVidia/premake4.lua +27 -0
  683. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/ApplyForces.cl +102 -0
  684. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/ComputeBounds.cl +82 -0
  685. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/Integrate.cl +35 -0
  686. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/OutputToVertexArray.cl +46 -0
  687. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/PrepareLinks.cl +38 -0
  688. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolveCollisionsAndUpdateVelocities.cl +204 -0
  689. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolveCollisionsAndUpdateVelocitiesSIMDBatched.cl +242 -0
  690. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolvePositions.cl +57 -0
  691. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/SolvePositionsSIMDBatched.cl +130 -0
  692. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateConstants.cl +44 -0
  693. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateFixedVertexPositions.cl +25 -0
  694. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateNodes.cl +39 -0
  695. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdateNormals.cl +102 -0
  696. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdatePositions.cl +34 -0
  697. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/UpdatePositionsFromVelocities.cl +28 -0
  698. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/OpenCLC10/VSolveLinks.cl +45 -0
  699. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverBuffer_OpenCL.h +209 -0
  700. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCL.h +99 -0
  701. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverLinkData_OpenCLSIMDAware.h +169 -0
  702. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.cpp +126 -0
  703. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverOutputCLtoGL.h +62 -0
  704. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverTriangleData_OpenCL.h +84 -0
  705. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexBuffer_OpenGL.h +166 -0
  706. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolverVertexData_OpenCL.h +52 -0
  707. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.cpp +1820 -0
  708. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCL.h +527 -0
  709. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.cpp +1101 -0
  710. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/btSoftBodySolver_OpenCLSIMDAware.h +81 -0
  711. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/OpenCL/cmake_install.cmake +35 -0
  712. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/Shared/btSoftBodySolverData.h +748 -0
  713. data/deps/include/bullet/BulletMultiThreaded/GpuSoftBodySolvers/cmake_install.cmake +35 -0
  714. data/deps/include/bullet/BulletMultiThreaded/HeapManager.h +117 -0
  715. data/deps/include/bullet/BulletMultiThreaded/Makefile +461 -0
  716. data/deps/include/bullet/BulletMultiThreaded/Makefile.original +187 -0
  717. data/deps/include/bullet/BulletMultiThreaded/PlatformDefinitions.h +99 -0
  718. data/deps/include/bullet/BulletMultiThreaded/PosixThreadSupport.cpp +399 -0
  719. data/deps/include/bullet/BulletMultiThreaded/PosixThreadSupport.h +142 -0
  720. data/deps/include/bullet/BulletMultiThreaded/PpuAddressSpace.h +37 -0
  721. data/deps/include/bullet/BulletMultiThreaded/SequentialThreadSupport.cpp +169 -0
  722. data/deps/include/bullet/BulletMultiThreaded/SequentialThreadSupport.h +96 -0
  723. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.cpp +48 -0
  724. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionObjectWrapper.h +40 -0
  725. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionTaskProcess.cpp +317 -0
  726. data/deps/include/bullet/BulletMultiThreaded/SpuCollisionTaskProcess.h +163 -0
  727. data/deps/include/bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.cpp +69 -0
  728. data/deps/include/bullet/BulletMultiThreaded/SpuContactManifoldCollisionAlgorithm.h +120 -0
  729. data/deps/include/bullet/BulletMultiThreaded/SpuDoubleBuffer.h +126 -0
  730. data/deps/include/bullet/BulletMultiThreaded/SpuFakeDma.cpp +215 -0
  731. data/deps/include/bullet/BulletMultiThreaded/SpuFakeDma.h +135 -0
  732. data/deps/include/bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.cpp +276 -0
  733. data/deps/include/bullet/BulletMultiThreaded/SpuGatheringCollisionDispatcher.h +72 -0
  734. data/deps/include/bullet/BulletMultiThreaded/SpuLibspe2Support.cpp +257 -0
  735. data/deps/include/bullet/BulletMultiThreaded/SpuLibspe2Support.h +180 -0
  736. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/Box.h +167 -0
  737. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.cpp +302 -0
  738. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuCollisionShapes.h +128 -0
  739. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.cpp +248 -0
  740. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuContactResult.h +106 -0
  741. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuConvexPenetrationDepthSolver.h +51 -0
  742. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp +1415 -0
  743. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.h +140 -0
  744. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuLocalSupport.h +19 -0
  745. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.cpp +348 -0
  746. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuMinkowskiPenetrationDepthSolver.h +48 -0
  747. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuPreferredPenetrationDirections.h +70 -0
  748. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.cpp +1160 -0
  749. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/boxBoxDistance.h +65 -0
  750. data/deps/include/bullet/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/readme.txt +1 -0
  751. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.cpp +214 -0
  752. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/SpuSampleTask.h +54 -0
  753. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTask/readme.txt +1 -0
  754. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTaskProcess.cpp +222 -0
  755. data/deps/include/bullet/BulletMultiThreaded/SpuSampleTaskProcess.h +153 -0
  756. data/deps/include/bullet/BulletMultiThreaded/SpuSync.h +149 -0
  757. data/deps/include/bullet/BulletMultiThreaded/TrbDynBody.h +79 -0
  758. data/deps/include/bullet/BulletMultiThreaded/TrbStateVec.h +339 -0
  759. data/deps/include/bullet/BulletMultiThreaded/Win32ThreadSupport.cpp +446 -0
  760. data/deps/include/bullet/BulletMultiThreaded/Win32ThreadSupport.h +138 -0
  761. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphase.cpp +590 -0
  762. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphase.h +138 -0
  763. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedCode.h +430 -0
  764. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedDefs.h +61 -0
  765. data/deps/include/bullet/BulletMultiThreaded/btGpu3DGridBroadphaseSharedTypes.h +67 -0
  766. data/deps/include/bullet/BulletMultiThreaded/btGpuDefines.h +211 -0
  767. data/deps/include/bullet/BulletMultiThreaded/btGpuUtilsSharedCode.h +55 -0
  768. data/deps/include/bullet/BulletMultiThreaded/btGpuUtilsSharedDefs.h +52 -0
  769. data/deps/include/bullet/BulletMultiThreaded/btParallelConstraintSolver.cpp +1391 -0
  770. data/deps/include/bullet/BulletMultiThreaded/btParallelConstraintSolver.h +285 -0
  771. data/deps/include/bullet/BulletMultiThreaded/btThreadSupportInterface.cpp +22 -0
  772. data/deps/include/bullet/BulletMultiThreaded/btThreadSupportInterface.h +85 -0
  773. data/deps/include/bullet/BulletMultiThreaded/cmake_install.cmake +35 -0
  774. data/deps/include/bullet/BulletMultiThreaded/vectormath2bullet.h +73 -0
  775. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/CXX.includecache +750 -0
  776. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/DependInfo.cmake +37 -0
  777. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btDefaultSoftBodySolver.obj +0 -0
  778. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBody.obj +0 -0
  779. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBodyConcaveCollisionAlgorithm.obj +0 -0
  780. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBodyHelpers.obj +0 -0
  781. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftBodyRigidBodyCollisionConfiguration.obj +0 -0
  782. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftRigidCollisionAlgorithm.obj +0 -0
  783. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftRigidDynamicsWorld.obj +0 -0
  784. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/btSoftSoftCollisionAlgorithm.obj +0 -0
  785. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/build.make +293 -0
  786. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/cmake_clean.cmake +17 -0
  787. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/cmake_clean_target.cmake +3 -0
  788. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/depend.internal +344 -0
  789. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/depend.make +344 -0
  790. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/flags.make +8 -0
  791. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/includes_CXX.rsp +1 -0
  792. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/link.txt +2 -0
  793. data/deps/include/bullet/BulletSoftBody/CMakeFiles/BulletSoftBody.dir/progress.make +9 -0
  794. data/deps/include/bullet/BulletSoftBody/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  795. data/deps/include/bullet/BulletSoftBody/CMakeFiles/progress.marks +1 -0
  796. data/deps/include/bullet/BulletSoftBody/CMakeLists.txt +65 -0
  797. data/deps/include/bullet/BulletSoftBody/Makefile +281 -0
  798. data/deps/include/bullet/BulletSoftBody/btDefaultSoftBodySolver.cpp +151 -0
  799. data/deps/include/bullet/BulletSoftBody/btDefaultSoftBodySolver.h +63 -0
  800. data/deps/include/bullet/BulletSoftBody/btSoftBody.cpp +3538 -0
  801. data/deps/include/bullet/BulletSoftBody/btSoftBody.h +987 -0
  802. data/deps/include/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp +368 -0
  803. data/deps/include/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h +153 -0
  804. data/deps/include/bullet/BulletSoftBody/btSoftBodyData.h +217 -0
  805. data/deps/include/bullet/BulletSoftBody/btSoftBodyHelpers.cpp +1055 -0
  806. data/deps/include/bullet/BulletSoftBody/btSoftBodyHelpers.h +143 -0
  807. data/deps/include/bullet/BulletSoftBody/btSoftBodyInternals.h +930 -0
  808. data/deps/include/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.cpp +134 -0
  809. data/deps/include/bullet/BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h +48 -0
  810. data/deps/include/bullet/BulletSoftBody/btSoftBodySolverVertexBuffer.h +165 -0
  811. data/deps/include/bullet/BulletSoftBody/btSoftBodySolvers.h +154 -0
  812. data/deps/include/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp +84 -0
  813. data/deps/include/bullet/BulletSoftBody/btSoftRigidCollisionAlgorithm.h +75 -0
  814. data/deps/include/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.cpp +365 -0
  815. data/deps/include/bullet/BulletSoftBody/btSoftRigidDynamicsWorld.h +107 -0
  816. data/deps/include/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.cpp +47 -0
  817. data/deps/include/bullet/BulletSoftBody/btSoftSoftCollisionAlgorithm.h +69 -0
  818. data/deps/include/bullet/BulletSoftBody/btSparseSDF.h +306 -0
  819. data/deps/include/bullet/BulletSoftBody/cmake_install.cmake +29 -0
  820. data/deps/include/bullet/BulletSoftBody/premake4.lua +11 -0
  821. data/deps/include/bullet/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  822. data/deps/include/bullet/CMakeFiles/progress.marks +1 -0
  823. data/deps/include/bullet/CMakeLists.txt +28 -0
  824. data/deps/include/bullet/LinearMath/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  825. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/CXX.includecache +154 -0
  826. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/DependInfo.cmake +35 -0
  827. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btAlignedAllocator.obj +0 -0
  828. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btConvexHull.obj +0 -0
  829. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btConvexHullComputer.obj +0 -0
  830. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btGeometryUtil.obj +0 -0
  831. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btQuickprof.obj +0 -0
  832. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/btSerializer.obj +0 -0
  833. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/build.make +239 -0
  834. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/cmake_clean.cmake +15 -0
  835. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/cmake_clean_target.cmake +3 -0
  836. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/depend.internal +38 -0
  837. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/depend.make +38 -0
  838. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/flags.make +8 -0
  839. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/includes_CXX.rsp +1 -0
  840. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/link.txt +2 -0
  841. data/deps/include/bullet/LinearMath/CMakeFiles/LinearMath.dir/progress.make +7 -0
  842. data/deps/include/bullet/LinearMath/CMakeFiles/progress.marks +1 -0
  843. data/deps/include/bullet/LinearMath/CMakeLists.txt +66 -0
  844. data/deps/include/bullet/LinearMath/Makefile +245 -0
  845. data/deps/include/bullet/LinearMath/btAabbUtil2.h +236 -0
  846. data/deps/include/bullet/LinearMath/btAlignedAllocator.cpp +181 -0
  847. data/deps/include/bullet/LinearMath/btAlignedAllocator.h +107 -0
  848. data/deps/include/bullet/LinearMath/btAlignedObjectArray.h +494 -0
  849. data/deps/include/bullet/LinearMath/btConvexHull.cpp +1174 -0
  850. data/deps/include/bullet/LinearMath/btConvexHull.h +241 -0
  851. data/deps/include/bullet/LinearMath/btConvexHullComputer.cpp +2751 -0
  852. data/deps/include/bullet/LinearMath/btConvexHullComputer.h +103 -0
  853. data/deps/include/bullet/LinearMath/btDefaultMotionState.h +40 -0
  854. data/deps/include/bullet/LinearMath/btGeometryUtil.cpp +185 -0
  855. data/deps/include/bullet/LinearMath/btGeometryUtil.h +42 -0
  856. data/deps/include/bullet/LinearMath/btGrahamScan2dConvexHull.h +110 -0
  857. data/deps/include/bullet/LinearMath/btHashMap.h +450 -0
  858. data/deps/include/bullet/LinearMath/btIDebugDraw.h +418 -0
  859. data/deps/include/bullet/LinearMath/btList.h +73 -0
  860. data/deps/include/bullet/LinearMath/btMatrix3x3.h +771 -0
  861. data/deps/include/bullet/LinearMath/btMinMax.h +71 -0
  862. data/deps/include/bullet/LinearMath/btMotionState.h +40 -0
  863. data/deps/include/bullet/LinearMath/btPoolAllocator.h +121 -0
  864. data/deps/include/bullet/LinearMath/btQuadWord.h +180 -0
  865. data/deps/include/bullet/LinearMath/btQuaternion.h +430 -0
  866. data/deps/include/bullet/LinearMath/btQuickprof.cpp +566 -0
  867. data/deps/include/bullet/LinearMath/btQuickprof.h +203 -0
  868. data/deps/include/bullet/LinearMath/btRandom.h +42 -0
  869. data/deps/include/bullet/LinearMath/btScalar.h +539 -0
  870. data/deps/include/bullet/LinearMath/btSerializer.cpp +841 -0
  871. data/deps/include/bullet/LinearMath/btSerializer.h +639 -0
  872. data/deps/include/bullet/LinearMath/btStackAlloc.h +116 -0
  873. data/deps/include/bullet/LinearMath/btTransform.h +307 -0
  874. data/deps/include/bullet/LinearMath/btTransformUtil.h +228 -0
  875. data/deps/include/bullet/LinearMath/btVector3.h +766 -0
  876. data/deps/include/bullet/LinearMath/cmake_install.cmake +29 -0
  877. data/deps/include/bullet/LinearMath/ibmsdk/Makefile +39 -0
  878. data/deps/include/bullet/LinearMath/premake4.lua +11 -0
  879. data/deps/include/bullet/Makefile +122 -0
  880. data/deps/include/bullet/Makefile.am +554 -0
  881. data/deps/include/bullet/MiniCL/CMakeFiles/CMakeDirectoryInformation.cmake +16 -0
  882. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/CXX.includecache +332 -0
  883. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/DependInfo.cmake +32 -0
  884. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/MiniCL.obj +0 -0
  885. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/MiniCLTask/MiniCLTask.obj +0 -0
  886. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/MiniCLTaskScheduler.obj +0 -0
  887. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/build.make +158 -0
  888. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/cmake_clean.cmake +12 -0
  889. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/cmake_clean_target.cmake +3 -0
  890. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/depend.internal +70 -0
  891. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/depend.make +70 -0
  892. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/flags.make +8 -0
  893. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/includes_CXX.rsp +1 -0
  894. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/link.txt +2 -0
  895. data/deps/include/bullet/MiniCL/CMakeFiles/MiniCL.dir/progress.make +4 -0
  896. data/deps/include/bullet/MiniCL/CMakeFiles/progress.marks +1 -0
  897. data/deps/include/bullet/MiniCL/CMakeLists.txt +66 -0
  898. data/deps/include/bullet/MiniCL/Makefile +191 -0
  899. data/deps/include/bullet/MiniCL/MiniCL.cpp +784 -0
  900. data/deps/include/bullet/MiniCL/MiniCLTask/MiniCLTask.cpp +74 -0
  901. data/deps/include/bullet/MiniCL/MiniCLTask/MiniCLTask.h +62 -0
  902. data/deps/include/bullet/MiniCL/MiniCLTaskScheduler.cpp +519 -0
  903. data/deps/include/bullet/MiniCL/MiniCLTaskScheduler.h +194 -0
  904. data/deps/include/bullet/MiniCL/cl.h +867 -0
  905. data/deps/include/bullet/MiniCL/cl_MiniCL_Defs.h +439 -0
  906. data/deps/include/bullet/MiniCL/cl_gl.h +113 -0
  907. data/deps/include/bullet/MiniCL/cl_platform.h +254 -0
  908. data/deps/include/bullet/MiniCL/cmake_install.cmake +29 -0
  909. data/deps/include/bullet/btBulletCollisionCommon.h +69 -0
  910. data/deps/include/bullet/btBulletDynamicsCommon.h +48 -0
  911. data/deps/include/bullet/cmake_install.cmake +40 -0
  912. data/deps/include/bullet/ibmsdk/Makefile +16 -0
  913. data/deps/include/bullet/vectormath/scalar/boolInVec.h +225 -0
  914. data/deps/include/bullet/vectormath/scalar/floatInVec.h +343 -0
  915. data/deps/include/bullet/vectormath/scalar/mat_aos.h +1630 -0
  916. data/deps/include/bullet/vectormath/scalar/quat_aos.h +433 -0
  917. data/deps/include/bullet/vectormath/scalar/vec_aos.h +1426 -0
  918. data/deps/include/bullet/vectormath/scalar/vectormath_aos.h +1872 -0
  919. data/deps/include/bullet/vectormath/sse/boolInVec.h +247 -0
  920. data/deps/include/bullet/vectormath/sse/floatInVec.h +340 -0
  921. data/deps/include/bullet/vectormath/sse/mat_aos.h +2190 -0
  922. data/deps/include/bullet/vectormath/sse/quat_aos.h +579 -0
  923. data/deps/include/bullet/vectormath/sse/vec_aos.h +1455 -0
  924. data/deps/include/bullet/vectormath/sse/vecidx_aos.h +80 -0
  925. data/deps/include/bullet/vectormath/sse/vectormath_aos.h +2547 -0
  926. data/deps/include/bullet/vectormath/vmInclude.h +27 -0
  927. data/deps/lib/libBulletCollision.a +0 -0
  928. data/deps/lib/libBulletDynamics.a +0 -0
  929. data/deps/lib/libBulletFileLoader.a +0 -0
  930. data/deps/lib/libBulletMultiThreaded.a +0 -0
  931. data/deps/lib/libBulletSoftBody.a +0 -0
  932. data/deps/lib/libBulletSoftBodySolvers_OpenCL_Mini.a +0 -0
  933. data/deps/lib/libBulletWorldImporter.a +0 -0
  934. data/deps/lib/libConvexDecomposition.a +0 -0
  935. data/deps/lib/libGIMPACTUtils.a +0 -0
  936. data/deps/lib/libHACD.a +0 -0
  937. data/deps/lib/libLinearMath.a +0 -0
  938. data/deps/lib/libMiniCL.a +0 -0
  939. data/lib/Bullet.so +0 -0
  940. data/lib/BulletConfig.rb +28 -0
  941. data/lib/Version.rb +5 -0
  942. data/sample/hello_bullet/HelloBullet.rb +170 -0
  943. metadata +987 -0
@@ -0,0 +1,1820 @@
1
+ /*
2
+ Bullet Continuous Collision Detection and Physics Library
3
+ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
4
+
5
+ This software is provided 'as-is', without any express or implied warranty.
6
+ In no event will the authors be held liable for any damages arising from the use of this software.
7
+ Permission is granted to anyone to use this software for any purpose,
8
+ including commercial applications, and to alter it and redistribute it freely,
9
+ subject to the following restrictions:
10
+
11
+ 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required.
12
+ 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.
13
+ 3. This notice may not be removed or altered from any source distribution.
14
+ */
15
+
16
+
17
+ #include "BulletCollision/CollisionShapes/btTriangleIndexVertexArray.h"
18
+ #include "vectormath/vmInclude.h"
19
+ #include <stdio.h> //@todo: remove the debugging printf at some stage
20
+ #include "btSoftBodySolver_OpenCL.h"
21
+ #include "BulletSoftBody/btSoftBodySolverVertexBuffer.h"
22
+ #include "BulletSoftBody/btSoftBody.h"
23
+ #include "BulletSoftBody/btSoftBodyInternals.h"
24
+ #include "BulletCollision/CollisionShapes/btCapsuleShape.h"
25
+ #include "BulletCollision/CollisionShapes/btSphereShape.h"
26
+ #include "LinearMath/btQuickprof.h"
27
+ #include <limits.h>
28
+
29
+
30
+ #define BT_SUPPRESS_OPENCL_ASSERTS
31
+
32
+ #ifdef USE_MINICL
33
+ #include "MiniCL/cl.h"
34
+ #else //USE_MINICL
35
+ #ifdef __APPLE__
36
+ #include <OpenCL/OpenCL.h>
37
+ #else
38
+ #include <CL/cl.h>
39
+ #endif //__APPLE__
40
+ #endif//USE_MINICL
41
+
42
+ #define BT_DEFAULT_WORKGROUPSIZE 64
43
+
44
+
45
+ #define RELEASE_CL_KERNEL(kernelName) {if( kernelName ){ clReleaseKernel( kernelName ); kernelName = 0; }}
46
+
47
+
48
+ //CL_VERSION_1_1 seems broken on NVidia SDK so just disable it
49
+
50
+ ////OpenCL 1.0 kernels don't use float3
51
+ #define MSTRINGIFY(A) #A
52
+ static const char* PrepareLinksCLString =
53
+ #include "OpenCLC10/PrepareLinks.cl"
54
+ static const char* UpdatePositionsFromVelocitiesCLString =
55
+ #include "OpenCLC10/UpdatePositionsFromVelocities.cl"
56
+ static const char* SolvePositionsCLString =
57
+ #include "OpenCLC10/SolvePositions.cl"
58
+ static const char* UpdateNodesCLString =
59
+ #include "OpenCLC10/UpdateNodes.cl"
60
+ static const char* UpdatePositionsCLString =
61
+ #include "OpenCLC10/UpdatePositions.cl"
62
+ static const char* UpdateConstantsCLString =
63
+ #include "OpenCLC10/UpdateConstants.cl"
64
+ static const char* IntegrateCLString =
65
+ #include "OpenCLC10/Integrate.cl"
66
+ static const char* ApplyForcesCLString =
67
+ #include "OpenCLC10/ApplyForces.cl"
68
+ static const char* UpdateFixedVertexPositionsCLString =
69
+ #include "OpenCLC10/UpdateFixedVertexPositions.cl"
70
+ static const char* UpdateNormalsCLString =
71
+ #include "OpenCLC10/UpdateNormals.cl"
72
+ static const char* VSolveLinksCLString =
73
+ #include "OpenCLC10/VSolveLinks.cl"
74
+ static const char* SolveCollisionsAndUpdateVelocitiesCLString =
75
+ #include "OpenCLC10/SolveCollisionsAndUpdateVelocities.cl"
76
+
77
+
78
+ btSoftBodyVertexDataOpenCL::btSoftBodyVertexDataOpenCL( cl_command_queue queue, cl_context ctx) :
79
+ m_queue(queue),
80
+ m_clClothIdentifier( queue, ctx, &m_clothIdentifier, false ),
81
+ m_clVertexPosition( queue, ctx, &m_vertexPosition, false ),
82
+ m_clVertexPreviousPosition( queue, ctx, &m_vertexPreviousPosition, false ),
83
+ m_clVertexVelocity( queue, ctx, &m_vertexVelocity, false ),
84
+ m_clVertexForceAccumulator( queue, ctx, &m_vertexForceAccumulator, false ),
85
+ m_clVertexNormal( queue, ctx, &m_vertexNormal, false ),
86
+ m_clVertexInverseMass( queue, ctx, &m_vertexInverseMass, false ),
87
+ m_clVertexArea( queue, ctx, &m_vertexArea, false ),
88
+ m_clVertexTriangleCount( queue, ctx, &m_vertexTriangleCount, false )
89
+ {
90
+ }
91
+
92
+ btSoftBodyVertexDataOpenCL::~btSoftBodyVertexDataOpenCL()
93
+ {
94
+
95
+ }
96
+
97
+ bool btSoftBodyVertexDataOpenCL::onAccelerator()
98
+ {
99
+ return m_onGPU;
100
+ }
101
+
102
+ bool btSoftBodyVertexDataOpenCL::moveToAccelerator()
103
+ {
104
+ bool success = true;
105
+ success = success && m_clClothIdentifier.moveToGPU();
106
+ success = success && m_clVertexPosition.moveToGPU();
107
+ success = success && m_clVertexPreviousPosition.moveToGPU();
108
+ success = success && m_clVertexVelocity.moveToGPU();
109
+ success = success && m_clVertexForceAccumulator.moveToGPU();
110
+ success = success && m_clVertexNormal.moveToGPU();
111
+ success = success && m_clVertexInverseMass.moveToGPU();
112
+ success = success && m_clVertexArea.moveToGPU();
113
+ success = success && m_clVertexTriangleCount.moveToGPU();
114
+
115
+ if( success )
116
+ m_onGPU = true;
117
+
118
+ return success;
119
+ }
120
+
121
+ bool btSoftBodyVertexDataOpenCL::moveFromAccelerator(bool bCopy, bool bCopyMinimum)
122
+ {
123
+ bool success = true;
124
+
125
+ if (!bCopy)
126
+ {
127
+ success = success && m_clClothIdentifier.moveFromGPU();
128
+ success = success && m_clVertexPosition.moveFromGPU();
129
+ success = success && m_clVertexPreviousPosition.moveFromGPU();
130
+ success = success && m_clVertexVelocity.moveFromGPU();
131
+ success = success && m_clVertexForceAccumulator.moveFromGPU();
132
+ success = success && m_clVertexNormal.moveFromGPU();
133
+ success = success && m_clVertexInverseMass.moveFromGPU();
134
+ success = success && m_clVertexArea.moveFromGPU();
135
+ success = success && m_clVertexTriangleCount.moveFromGPU();
136
+ }
137
+ else
138
+ {
139
+ if (bCopyMinimum)
140
+ {
141
+ success = success && m_clVertexPosition.copyFromGPU();
142
+ success = success && m_clVertexNormal.copyFromGPU();
143
+ }
144
+ else
145
+ {
146
+ success = success && m_clClothIdentifier.copyFromGPU();
147
+ success = success && m_clVertexPosition.copyFromGPU();
148
+ success = success && m_clVertexPreviousPosition.copyFromGPU();
149
+ success = success && m_clVertexVelocity.copyFromGPU();
150
+ success = success && m_clVertexForceAccumulator.copyFromGPU();
151
+ success = success && m_clVertexNormal.copyFromGPU();
152
+ success = success && m_clVertexInverseMass.copyFromGPU();
153
+ success = success && m_clVertexArea.copyFromGPU();
154
+ success = success && m_clVertexTriangleCount.copyFromGPU();
155
+ }
156
+ }
157
+
158
+ if( success )
159
+ m_onGPU = true;
160
+
161
+ return success;
162
+ }
163
+
164
+ btSoftBodyLinkDataOpenCL::btSoftBodyLinkDataOpenCL(cl_command_queue queue, cl_context ctx)
165
+ :m_cqCommandQue(queue),
166
+ m_clLinks( queue, ctx, &m_links, false ),
167
+ m_clLinkStrength( queue, ctx, &m_linkStrength, false ),
168
+ m_clLinksMassLSC( queue, ctx, &m_linksMassLSC, false ),
169
+ m_clLinksRestLengthSquared( queue, ctx, &m_linksRestLengthSquared, false ),
170
+ m_clLinksCLength( queue, ctx, &m_linksCLength, false ),
171
+ m_clLinksLengthRatio( queue, ctx, &m_linksLengthRatio, false ),
172
+ m_clLinksRestLength( queue, ctx, &m_linksRestLength, false ),
173
+ m_clLinksMaterialLinearStiffnessCoefficient( queue, ctx, &m_linksMaterialLinearStiffnessCoefficient, false )
174
+ {
175
+ }
176
+
177
+ btSoftBodyLinkDataOpenCL::~btSoftBodyLinkDataOpenCL()
178
+ {
179
+ }
180
+
181
+ static Vectormath::Aos::Vector3 toVector3( const btVector3 &vec )
182
+ {
183
+ Vectormath::Aos::Vector3 outVec( vec.getX(), vec.getY(), vec.getZ() );
184
+ return outVec;
185
+ }
186
+
187
+ /** Allocate enough space in all link-related arrays to fit numLinks links */
188
+ void btSoftBodyLinkDataOpenCL::createLinks( int numLinks )
189
+ {
190
+ int previousSize = m_links.size();
191
+ int newSize = previousSize + numLinks;
192
+
193
+ btSoftBodyLinkData::createLinks( numLinks );
194
+
195
+ // Resize the link addresses array as well
196
+ m_linkAddresses.resize( newSize );
197
+ }
198
+
199
+ /** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
200
+ void btSoftBodyLinkDataOpenCL::setLinkAt(
201
+ const LinkDescription &link,
202
+ int linkIndex )
203
+ {
204
+ btSoftBodyLinkData::setLinkAt( link, linkIndex );
205
+
206
+ // Set the link index correctly for initialisation
207
+ m_linkAddresses[linkIndex] = linkIndex;
208
+ }
209
+
210
+ bool btSoftBodyLinkDataOpenCL::onAccelerator()
211
+ {
212
+ return m_onGPU;
213
+ }
214
+
215
+ bool btSoftBodyLinkDataOpenCL::moveToAccelerator()
216
+ {
217
+ bool success = true;
218
+ success = success && m_clLinks.moveToGPU();
219
+ success = success && m_clLinkStrength.moveToGPU();
220
+ success = success && m_clLinksMassLSC.moveToGPU();
221
+ success = success && m_clLinksRestLengthSquared.moveToGPU();
222
+ success = success && m_clLinksCLength.moveToGPU();
223
+ success = success && m_clLinksLengthRatio.moveToGPU();
224
+ success = success && m_clLinksRestLength.moveToGPU();
225
+ success = success && m_clLinksMaterialLinearStiffnessCoefficient.moveToGPU();
226
+
227
+ if( success ) {
228
+ m_onGPU = true;
229
+ }
230
+
231
+ return success;
232
+ }
233
+
234
+ bool btSoftBodyLinkDataOpenCL::moveFromAccelerator()
235
+ {
236
+ bool success = true;
237
+ success = success && m_clLinks.moveFromGPU();
238
+ success = success && m_clLinkStrength.moveFromGPU();
239
+ success = success && m_clLinksMassLSC.moveFromGPU();
240
+ success = success && m_clLinksRestLengthSquared.moveFromGPU();
241
+ success = success && m_clLinksCLength.moveFromGPU();
242
+ success = success && m_clLinksLengthRatio.moveFromGPU();
243
+ success = success && m_clLinksRestLength.moveFromGPU();
244
+ success = success && m_clLinksMaterialLinearStiffnessCoefficient.moveFromGPU();
245
+
246
+ if( success ) {
247
+ m_onGPU = false;
248
+ }
249
+
250
+ return success;
251
+ }
252
+
253
+ /**
254
+ * Generate (and later update) the batching for the entire link set.
255
+ * This redoes a lot of work because it batches the entire set when each cloth is inserted.
256
+ * In theory we could delay it until just before we need the cloth.
257
+ * It's a one-off overhead, though, so that is a later optimisation.
258
+ */
259
+ void btSoftBodyLinkDataOpenCL::generateBatches()
260
+ {
261
+ int numLinks = getNumLinks();
262
+
263
+ // Do the graph colouring here temporarily
264
+ btAlignedObjectArray< int > batchValues;
265
+ batchValues.resize( numLinks, 0 );
266
+
267
+ // Find the maximum vertex value internally for now
268
+ int maxVertex = 0;
269
+ for( int linkIndex = 0; linkIndex < numLinks; ++linkIndex )
270
+ {
271
+ int vertex0 = getVertexPair(linkIndex).vertex0;
272
+ int vertex1 = getVertexPair(linkIndex).vertex1;
273
+ if( vertex0 > maxVertex )
274
+ maxVertex = vertex0;
275
+ if( vertex1 > maxVertex )
276
+ maxVertex = vertex1;
277
+ }
278
+ int numVertices = maxVertex + 1;
279
+
280
+ // Set of lists, one for each node, specifying which colours are connected
281
+ // to that node.
282
+ // No two edges into a node can share a colour.
283
+ btAlignedObjectArray< btAlignedObjectArray< int > > vertexConnectedColourLists;
284
+ vertexConnectedColourLists.resize(numVertices);
285
+
286
+ // Simple algorithm that chooses the lowest batch number
287
+ // that none of the links attached to either of the connected
288
+ // nodes is in
289
+ for( int linkIndex = 0; linkIndex < numLinks; ++linkIndex )
290
+ {
291
+ int linkLocation = m_linkAddresses[linkIndex];
292
+
293
+ int vertex0 = getVertexPair(linkLocation).vertex0;
294
+ int vertex1 = getVertexPair(linkLocation).vertex1;
295
+
296
+ // Get the two node colour lists
297
+ btAlignedObjectArray< int > &colourListVertex0( vertexConnectedColourLists[vertex0] );
298
+ btAlignedObjectArray< int > &colourListVertex1( vertexConnectedColourLists[vertex1] );
299
+
300
+ // Choose the minimum colour that is in neither list
301
+ int colour = 0;
302
+ while( colourListVertex0.findLinearSearch(colour) != colourListVertex0.size() || colourListVertex1.findLinearSearch(colour) != colourListVertex1.size() )
303
+ ++colour;
304
+ // i should now be the minimum colour in neither list
305
+ // Add to the two lists so that future edges don't share
306
+ // And store the colour against this edge
307
+
308
+ colourListVertex0.push_back(colour);
309
+ colourListVertex1.push_back(colour);
310
+ batchValues[linkIndex] = colour;
311
+ }
312
+
313
+ // Check the colour counts
314
+ btAlignedObjectArray< int > batchCounts;
315
+ for( int i = 0; i < numLinks; ++i )
316
+ {
317
+ int batch = batchValues[i];
318
+ if( batch >= batchCounts.size() )
319
+ batchCounts.push_back(1);
320
+ else
321
+ ++(batchCounts[batch]);
322
+ }
323
+
324
+ m_batchStartLengths.resize(batchCounts.size());
325
+ if( m_batchStartLengths.size() > 0 )
326
+ {
327
+ m_batchStartLengths.resize(batchCounts.size());
328
+ m_batchStartLengths[0] = BatchPair(0, 0);
329
+
330
+ int sum = 0;
331
+ for( int batchIndex = 0; batchIndex < batchCounts.size(); ++batchIndex )
332
+ {
333
+ m_batchStartLengths[batchIndex].start = sum;
334
+ m_batchStartLengths[batchIndex].length = batchCounts[batchIndex];
335
+ sum += batchCounts[batchIndex];
336
+ }
337
+ }
338
+
339
+ /////////////////////////////
340
+ // Sort data based on batches
341
+
342
+ // Create source arrays by copying originals
343
+ btAlignedObjectArray<LinkNodePair> m_links_Backup(m_links);
344
+ btAlignedObjectArray<float> m_linkStrength_Backup(m_linkStrength);
345
+ btAlignedObjectArray<float> m_linksMassLSC_Backup(m_linksMassLSC);
346
+ btAlignedObjectArray<float> m_linksRestLengthSquared_Backup(m_linksRestLengthSquared);
347
+ btAlignedObjectArray<Vectormath::Aos::Vector3> m_linksCLength_Backup(m_linksCLength);
348
+ btAlignedObjectArray<float> m_linksLengthRatio_Backup(m_linksLengthRatio);
349
+ btAlignedObjectArray<float> m_linksRestLength_Backup(m_linksRestLength);
350
+ btAlignedObjectArray<float> m_linksMaterialLinearStiffnessCoefficient_Backup(m_linksMaterialLinearStiffnessCoefficient);
351
+
352
+
353
+ for( int batch = 0; batch < batchCounts.size(); ++batch )
354
+ batchCounts[batch] = 0;
355
+
356
+ // Do sort as single pass into destination arrays
357
+ for( int linkIndex = 0; linkIndex < numLinks; ++linkIndex )
358
+ {
359
+ // To maintain locations run off the original link locations rather than the current position.
360
+ // It's not cache efficient, but as we run this rarely that should not matter.
361
+ // It's faster than searching the link location array for the current location and then updating it.
362
+ // The other alternative would be to unsort before resorting, but this is equivalent to doing that.
363
+ int linkLocation = m_linkAddresses[linkIndex];
364
+
365
+ // Obtain batch and calculate target location for the
366
+ // next element in that batch, incrementing the batch counter
367
+ // afterwards
368
+ int batch = batchValues[linkIndex];
369
+ int newLocation = m_batchStartLengths[batch].start + batchCounts[batch];
370
+
371
+ batchCounts[batch] = batchCounts[batch] + 1;
372
+ m_links[newLocation] = m_links_Backup[linkLocation];
373
+ #if 1
374
+ m_linkStrength[newLocation] = m_linkStrength_Backup[linkLocation];
375
+ m_linksMassLSC[newLocation] = m_linksMassLSC_Backup[linkLocation];
376
+ m_linksRestLengthSquared[newLocation] = m_linksRestLengthSquared_Backup[linkLocation];
377
+ m_linksLengthRatio[newLocation] = m_linksLengthRatio_Backup[linkLocation];
378
+ m_linksRestLength[newLocation] = m_linksRestLength_Backup[linkLocation];
379
+ m_linksMaterialLinearStiffnessCoefficient[newLocation] = m_linksMaterialLinearStiffnessCoefficient_Backup[linkLocation];
380
+ #endif
381
+ // Update the locations array to account for the moved entry
382
+ m_linkAddresses[linkIndex] = newLocation;
383
+ }
384
+
385
+
386
+ } // void generateBatches()
387
+
388
+
389
+
390
+
391
+
392
+ btSoftBodyTriangleDataOpenCL::btSoftBodyTriangleDataOpenCL( cl_command_queue queue , cl_context ctx) :
393
+ m_queue( queue ),
394
+ m_clVertexIndices( queue, ctx, &m_vertexIndices, false ),
395
+ m_clArea( queue, ctx, &m_area, false ),
396
+ m_clNormal( queue, ctx, &m_normal, false )
397
+ {
398
+ }
399
+
400
+ btSoftBodyTriangleDataOpenCL::~btSoftBodyTriangleDataOpenCL()
401
+ {
402
+ }
403
+
404
+ /** Allocate enough space in all link-related arrays to fit numLinks links */
405
+ void btSoftBodyTriangleDataOpenCL::createTriangles( int numTriangles )
406
+ {
407
+ int previousSize = getNumTriangles();
408
+ int newSize = previousSize + numTriangles;
409
+
410
+ btSoftBodyTriangleData::createTriangles( numTriangles );
411
+
412
+ // Resize the link addresses array as well
413
+ m_triangleAddresses.resize( newSize );
414
+ }
415
+
416
+ /** Insert the link described into the correct data structures assuming space has already been allocated by a call to createLinks */
417
+ void btSoftBodyTriangleDataOpenCL::setTriangleAt( const btSoftBodyTriangleData::TriangleDescription &triangle, int triangleIndex )
418
+ {
419
+ btSoftBodyTriangleData::setTriangleAt( triangle, triangleIndex );
420
+
421
+ m_triangleAddresses[triangleIndex] = triangleIndex;
422
+ }
423
+
424
+ bool btSoftBodyTriangleDataOpenCL::onAccelerator()
425
+ {
426
+ return m_onGPU;
427
+ }
428
+
429
+ bool btSoftBodyTriangleDataOpenCL::moveToAccelerator()
430
+ {
431
+ bool success = true;
432
+ success = success && m_clVertexIndices.moveToGPU();
433
+ success = success && m_clArea.moveToGPU();
434
+ success = success && m_clNormal.moveToGPU();
435
+
436
+ if( success )
437
+ m_onGPU = true;
438
+
439
+ return success;
440
+ }
441
+
442
+ bool btSoftBodyTriangleDataOpenCL::moveFromAccelerator()
443
+ {
444
+ bool success = true;
445
+ success = success && m_clVertexIndices.moveFromGPU();
446
+ success = success && m_clArea.moveFromGPU();
447
+ success = success && m_clNormal.moveFromGPU();
448
+
449
+ if( success )
450
+ m_onGPU = true;
451
+
452
+ return success;
453
+ }
454
+
455
+ /**
456
+ * Generate (and later update) the batching for the entire triangle set.
457
+ * This redoes a lot of work because it batches the entire set when each cloth is inserted.
458
+ * In theory we could delay it until just before we need the cloth.
459
+ * It's a one-off overhead, though, so that is a later optimisation.
460
+ */
461
+ void btSoftBodyTriangleDataOpenCL::generateBatches()
462
+ {
463
+ int numTriangles = getNumTriangles();
464
+ if( numTriangles == 0 )
465
+ return;
466
+
467
+ // Do the graph colouring here temporarily
468
+ btAlignedObjectArray< int > batchValues;
469
+ batchValues.resize( numTriangles );
470
+
471
+ // Find the maximum vertex value internally for now
472
+ int maxVertex = 0;
473
+ for( int triangleIndex = 0; triangleIndex < numTriangles; ++triangleIndex )
474
+ {
475
+ int vertex0 = getVertexSet(triangleIndex).vertex0;
476
+ int vertex1 = getVertexSet(triangleIndex).vertex1;
477
+ int vertex2 = getVertexSet(triangleIndex).vertex2;
478
+
479
+ if( vertex0 > maxVertex )
480
+ maxVertex = vertex0;
481
+ if( vertex1 > maxVertex )
482
+ maxVertex = vertex1;
483
+ if( vertex2 > maxVertex )
484
+ maxVertex = vertex2;
485
+ }
486
+ int numVertices = maxVertex + 1;
487
+
488
+ // Set of lists, one for each node, specifying which colours are connected
489
+ // to that node.
490
+ // No two edges into a node can share a colour.
491
+ btAlignedObjectArray< btAlignedObjectArray< int > > vertexConnectedColourLists;
492
+ vertexConnectedColourLists.resize(numVertices);
493
+
494
+
495
+ //std::cout << "\n";
496
+ // Simple algorithm that chooses the lowest batch number
497
+ // that none of the faces attached to either of the connected
498
+ // nodes is in
499
+ for( int triangleIndex = 0; triangleIndex < numTriangles; ++triangleIndex )
500
+ {
501
+ // To maintain locations run off the original link locations rather than the current position.
502
+ // It's not cache efficient, but as we run this rarely that should not matter.
503
+ // It's faster than searching the link location array for the current location and then updating it.
504
+ // The other alternative would be to unsort before resorting, but this is equivalent to doing that.
505
+ int triangleLocation = m_triangleAddresses[triangleIndex];
506
+
507
+ int vertex0 = getVertexSet(triangleLocation).vertex0;
508
+ int vertex1 = getVertexSet(triangleLocation).vertex1;
509
+ int vertex2 = getVertexSet(triangleLocation).vertex2;
510
+
511
+ // Get the three node colour lists
512
+ btAlignedObjectArray< int > &colourListVertex0( vertexConnectedColourLists[vertex0] );
513
+ btAlignedObjectArray< int > &colourListVertex1( vertexConnectedColourLists[vertex1] );
514
+ btAlignedObjectArray< int > &colourListVertex2( vertexConnectedColourLists[vertex2] );
515
+
516
+ // Choose the minimum colour that is in none of the lists
517
+ int colour = 0;
518
+ while(
519
+ colourListVertex0.findLinearSearch(colour) != colourListVertex0.size() ||
520
+ colourListVertex1.findLinearSearch(colour) != colourListVertex1.size() ||
521
+ colourListVertex2.findLinearSearch(colour) != colourListVertex2.size() )
522
+ {
523
+ ++colour;
524
+ }
525
+ // i should now be the minimum colour in neither list
526
+ // Add to the three lists so that future edges don't share
527
+ // And store the colour against this face
528
+ colourListVertex0.push_back(colour);
529
+ colourListVertex1.push_back(colour);
530
+ colourListVertex2.push_back(colour);
531
+
532
+ batchValues[triangleIndex] = colour;
533
+ }
534
+
535
+
536
+ // Check the colour counts
537
+ btAlignedObjectArray< int > batchCounts;
538
+ for( int i = 0; i < numTriangles; ++i )
539
+ {
540
+ int batch = batchValues[i];
541
+ if( batch >= batchCounts.size() )
542
+ batchCounts.push_back(1);
543
+ else
544
+ ++(batchCounts[batch]);
545
+ }
546
+
547
+
548
+ m_batchStartLengths.resize(batchCounts.size());
549
+ m_batchStartLengths[0] = btSomePair(0,0);
550
+
551
+
552
+ int sum = 0;
553
+ for( int batchIndex = 0; batchIndex < batchCounts.size(); ++batchIndex )
554
+ {
555
+ m_batchStartLengths[batchIndex].first = sum;
556
+ m_batchStartLengths[batchIndex].second = batchCounts[batchIndex];
557
+ sum += batchCounts[batchIndex];
558
+ }
559
+
560
+ /////////////////////////////
561
+ // Sort data based on batches
562
+
563
+ // Create source arrays by copying originals
564
+ btAlignedObjectArray<btSoftBodyTriangleData::TriangleNodeSet> m_vertexIndices_Backup(m_vertexIndices);
565
+ btAlignedObjectArray<float> m_area_Backup(m_area);
566
+ btAlignedObjectArray<Vectormath::Aos::Vector3> m_normal_Backup(m_normal);
567
+
568
+
569
+ for( int batch = 0; batch < batchCounts.size(); ++batch )
570
+ batchCounts[batch] = 0;
571
+
572
+ // Do sort as single pass into destination arrays
573
+ for( int triangleIndex = 0; triangleIndex < numTriangles; ++triangleIndex )
574
+ {
575
+ // To maintain locations run off the original link locations rather than the current position.
576
+ // It's not cache efficient, but as we run this rarely that should not matter.
577
+ // It's faster than searching the link location array for the current location and then updating it.
578
+ // The other alternative would be to unsort before resorting, but this is equivalent to doing that.
579
+ int triangleLocation = m_triangleAddresses[triangleIndex];
580
+
581
+ // Obtain batch and calculate target location for the
582
+ // next element in that batch, incrementing the batch counter
583
+ // afterwards
584
+ int batch = batchValues[triangleIndex];
585
+ int newLocation = m_batchStartLengths[batch].first + batchCounts[batch];
586
+
587
+ batchCounts[batch] = batchCounts[batch] + 1;
588
+ m_vertexIndices[newLocation] = m_vertexIndices_Backup[triangleLocation];
589
+ m_area[newLocation] = m_area_Backup[triangleLocation];
590
+ m_normal[newLocation] = m_normal_Backup[triangleLocation];
591
+
592
+ // Update the locations array to account for the moved entry
593
+ m_triangleAddresses[triangleIndex] = newLocation;
594
+ }
595
+ } // btSoftBodyTriangleDataOpenCL::generateBatches
596
+
597
+
598
+
599
+
600
+
601
+
602
+
603
+ btOpenCLSoftBodySolver::btOpenCLSoftBodySolver(cl_command_queue queue, cl_context ctx, bool bUpdateAchchoredNodePos) :
604
+ m_linkData(queue, ctx),
605
+ m_vertexData(queue, ctx),
606
+ m_triangleData(queue, ctx),
607
+ m_defaultCLFunctions(queue, ctx),
608
+ m_currentCLFunctions(&m_defaultCLFunctions),
609
+ m_clPerClothAcceleration(queue, ctx, &m_perClothAcceleration, true ),
610
+ m_clPerClothWindVelocity(queue, ctx, &m_perClothWindVelocity, true ),
611
+ m_clPerClothDampingFactor(queue,ctx, &m_perClothDampingFactor, true ),
612
+ m_clPerClothVelocityCorrectionCoefficient(queue, ctx,&m_perClothVelocityCorrectionCoefficient, true ),
613
+ m_clPerClothLiftFactor(queue, ctx,&m_perClothLiftFactor, true ),
614
+ m_clPerClothDragFactor(queue, ctx,&m_perClothDragFactor, true ),
615
+ m_clPerClothMediumDensity(queue, ctx,&m_perClothMediumDensity, true ),
616
+ m_clPerClothCollisionObjects( queue, ctx, &m_perClothCollisionObjects, true ),
617
+ m_clCollisionObjectDetails( queue, ctx, &m_collisionObjectDetails, true ),
618
+ m_clPerClothFriction( queue, ctx, &m_perClothFriction, false ),
619
+ m_clAnchorPosition( queue, ctx, &m_anchorPosition, true ),
620
+ m_clAnchorIndex( queue, ctx, &m_anchorIndex, true),
621
+ m_cqCommandQue( queue ),
622
+ m_cxMainContext(ctx),
623
+ m_defaultWorkGroupSize(BT_DEFAULT_WORKGROUPSIZE),
624
+ m_bUpdateAnchoredNodePos(bUpdateAchchoredNodePos)
625
+ {
626
+
627
+ // Initial we will clearly need to update solver constants
628
+ // For now this is global for the cloths linked with this solver - we should probably make this body specific
629
+ // for performance in future once we understand more clearly when constants need to be updated
630
+ m_updateSolverConstants = true;
631
+
632
+ m_shadersInitialized = false;
633
+
634
+ m_prepareLinksKernel = 0;
635
+ m_solvePositionsFromLinksKernel = 0;
636
+ m_updateConstantsKernel = 0;
637
+ m_integrateKernel = 0;
638
+ m_addVelocityKernel = 0;
639
+ m_updatePositionsFromVelocitiesKernel = 0;
640
+ m_updateVelocitiesFromPositionsWithoutVelocitiesKernel = 0;
641
+ m_updateVelocitiesFromPositionsWithVelocitiesKernel = 0;
642
+ m_vSolveLinksKernel = 0;
643
+ m_solveCollisionsAndUpdateVelocitiesKernel = 0;
644
+ m_resetNormalsAndAreasKernel = 0;
645
+ m_updateSoftBodiesKernel = 0;
646
+ m_normalizeNormalsAndAreasKernel = 0;
647
+ m_outputToVertexArrayKernel = 0;
648
+ m_applyForcesKernel = 0;
649
+ m_updateFixedVertexPositionsKernel = 0;
650
+ }
651
+
652
+ btOpenCLSoftBodySolver::~btOpenCLSoftBodySolver()
653
+ {
654
+ releaseKernels();
655
+ }
656
+
657
+ void btOpenCLSoftBodySolver::releaseKernels()
658
+ {
659
+ RELEASE_CL_KERNEL( m_prepareLinksKernel );
660
+ RELEASE_CL_KERNEL( m_solvePositionsFromLinksKernel );
661
+ RELEASE_CL_KERNEL( m_updateConstantsKernel );
662
+ RELEASE_CL_KERNEL( m_integrateKernel );
663
+ RELEASE_CL_KERNEL( m_addVelocityKernel );
664
+ RELEASE_CL_KERNEL( m_updatePositionsFromVelocitiesKernel );
665
+ RELEASE_CL_KERNEL( m_updateVelocitiesFromPositionsWithoutVelocitiesKernel );
666
+ RELEASE_CL_KERNEL( m_updateVelocitiesFromPositionsWithVelocitiesKernel );
667
+ RELEASE_CL_KERNEL( m_vSolveLinksKernel );
668
+ RELEASE_CL_KERNEL( m_solveCollisionsAndUpdateVelocitiesKernel );
669
+ RELEASE_CL_KERNEL( m_resetNormalsAndAreasKernel );
670
+ RELEASE_CL_KERNEL( m_normalizeNormalsAndAreasKernel );
671
+ RELEASE_CL_KERNEL( m_outputToVertexArrayKernel );
672
+ RELEASE_CL_KERNEL( m_applyForcesKernel );
673
+ RELEASE_CL_KERNEL( m_updateFixedVertexPositionsKernel );
674
+
675
+ m_shadersInitialized = false;
676
+ }
677
+
678
+ void btOpenCLSoftBodySolver::copyBackToSoftBodies(bool bMove)
679
+ {
680
+
681
+ // Move the vertex data back to the host first
682
+ m_vertexData.moveFromAccelerator(!bMove);
683
+
684
+ // Loop over soft bodies, copying all the vertex positions back for each body in turn
685
+ for( int softBodyIndex = 0; softBodyIndex < m_softBodySet.size(); ++softBodyIndex )
686
+ {
687
+ btOpenCLAcceleratedSoftBodyInterface *softBodyInterface = m_softBodySet[ softBodyIndex ];
688
+ btSoftBody *softBody = softBodyInterface->getSoftBody();
689
+
690
+ int firstVertex = softBodyInterface->getFirstVertex();
691
+ int numVertices = softBodyInterface->getNumVertices();
692
+
693
+ // Copy vertices from solver back into the softbody
694
+ for( int vertex = 0; vertex < numVertices; ++vertex )
695
+ {
696
+ using Vectormath::Aos::Point3;
697
+ Point3 vertexPosition( m_vertexData.getVertexPositions()[firstVertex + vertex] );
698
+ Point3 normal(m_vertexData.getNormal(firstVertex + vertex));
699
+
700
+ softBody->m_nodes[vertex].m_x.setX( vertexPosition.getX() );
701
+ softBody->m_nodes[vertex].m_x.setY( vertexPosition.getY() );
702
+ softBody->m_nodes[vertex].m_x.setZ( vertexPosition.getZ() );
703
+
704
+ softBody->m_nodes[vertex].m_n.setX( normal.getX() );
705
+ softBody->m_nodes[vertex].m_n.setY( normal.getY() );
706
+ softBody->m_nodes[vertex].m_n.setZ( normal.getZ() );
707
+ }
708
+ }
709
+ } // btOpenCLSoftBodySolver::copyBackToSoftBodies
710
+
711
+ void btOpenCLSoftBodySolver::optimize( btAlignedObjectArray< btSoftBody * > &softBodies, bool forceUpdate )
712
+ {
713
+ if( forceUpdate || m_softBodySet.size() != softBodies.size() )
714
+ {
715
+ // Have a change in the soft body set so update, reloading all the data
716
+ getVertexData().clear();
717
+ getTriangleData().clear();
718
+ getLinkData().clear();
719
+ m_softBodySet.resize(0);
720
+ m_anchorIndex.clear();
721
+
722
+ int maxPiterations = 0;
723
+ int maxViterations = 0;
724
+
725
+ for( int softBodyIndex = 0; softBodyIndex < softBodies.size(); ++softBodyIndex )
726
+ {
727
+ btSoftBody *softBody = softBodies[ softBodyIndex ];
728
+ using Vectormath::Aos::Matrix3;
729
+ using Vectormath::Aos::Point3;
730
+
731
+ // Create SoftBody that will store the information within the solver
732
+ btOpenCLAcceleratedSoftBodyInterface *newSoftBody = new btOpenCLAcceleratedSoftBodyInterface( softBody );
733
+ m_softBodySet.push_back( newSoftBody );
734
+
735
+ m_perClothAcceleration.push_back( toVector3(softBody->getWorldInfo()->m_gravity) );
736
+ m_perClothDampingFactor.push_back(softBody->m_cfg.kDP);
737
+ m_perClothVelocityCorrectionCoefficient.push_back( softBody->m_cfg.kVCF );
738
+ m_perClothLiftFactor.push_back( softBody->m_cfg.kLF );
739
+ m_perClothDragFactor.push_back( softBody->m_cfg.kDG );
740
+ m_perClothMediumDensity.push_back(softBody->getWorldInfo()->air_density);
741
+ // Simple init values. Actually we'll put 0 and -1 into them at the appropriate time
742
+ m_perClothFriction.push_back(softBody->m_cfg.kDF);
743
+ m_perClothCollisionObjects.push_back( CollisionObjectIndices(-1, -1) );
744
+
745
+ // Add space for new vertices and triangles in the default solver for now
746
+ // TODO: Include space here for tearing too later
747
+ int firstVertex = getVertexData().getNumVertices();
748
+ int numVertices = softBody->m_nodes.size();
749
+ int maxVertices = numVertices;
750
+ // Allocate space for new vertices in all the vertex arrays
751
+ getVertexData().createVertices( maxVertices, softBodyIndex );
752
+
753
+ int firstTriangle = getTriangleData().getNumTriangles();
754
+ int numTriangles = softBody->m_faces.size();
755
+ int maxTriangles = numTriangles;
756
+ getTriangleData().createTriangles( maxTriangles );
757
+
758
+ // Copy vertices from softbody into the solver
759
+ for( int vertex = 0; vertex < numVertices; ++vertex )
760
+ {
761
+ Point3 multPoint(softBody->m_nodes[vertex].m_x.getX(), softBody->m_nodes[vertex].m_x.getY(), softBody->m_nodes[vertex].m_x.getZ());
762
+ btSoftBodyVertexData::VertexDescription desc;
763
+
764
+ // TODO: Position in the softbody might be pre-transformed
765
+ // or we may need to adapt for the pose.
766
+ //desc.setPosition( cloth.getMeshTransform()*multPoint );
767
+ desc.setPosition( multPoint );
768
+
769
+ float vertexInverseMass = softBody->m_nodes[vertex].m_im;
770
+ desc.setInverseMass(vertexInverseMass);
771
+ getVertexData().setVertexAt( desc, firstVertex + vertex );
772
+
773
+ m_anchorIndex.push_back(-1.0);
774
+ }
775
+
776
+ // Copy triangles similarly
777
+ // We're assuming here that vertex indices are based on the firstVertex rather than the entire scene
778
+ for( int triangle = 0; triangle < numTriangles; ++triangle )
779
+ {
780
+ // Note that large array storage is relative to the array not to the cloth
781
+ // So we need to add firstVertex to each value
782
+ int vertexIndex0 = (softBody->m_faces[triangle].m_n[0] - &(softBody->m_nodes[0]));
783
+ int vertexIndex1 = (softBody->m_faces[triangle].m_n[1] - &(softBody->m_nodes[0]));
784
+ int vertexIndex2 = (softBody->m_faces[triangle].m_n[2] - &(softBody->m_nodes[0]));
785
+ btSoftBodyTriangleData::TriangleDescription newTriangle(vertexIndex0 + firstVertex, vertexIndex1 + firstVertex, vertexIndex2 + firstVertex);
786
+ getTriangleData().setTriangleAt( newTriangle, firstTriangle + triangle );
787
+
788
+ // Increase vertex triangle counts for this triangle
789
+ getVertexData().getTriangleCount(newTriangle.getVertexSet().vertex0)++;
790
+ getVertexData().getTriangleCount(newTriangle.getVertexSet().vertex1)++;
791
+ getVertexData().getTriangleCount(newTriangle.getVertexSet().vertex2)++;
792
+ }
793
+
794
+ int firstLink = getLinkData().getNumLinks();
795
+ int numLinks = softBody->m_links.size();
796
+ int maxLinks = numLinks;
797
+
798
+ // Allocate space for the links
799
+ getLinkData().createLinks( numLinks );
800
+
801
+ // Add the links
802
+ for( int link = 0; link < numLinks; ++link )
803
+ {
804
+ int vertexIndex0 = softBody->m_links[link].m_n[0] - &(softBody->m_nodes[0]);
805
+ int vertexIndex1 = softBody->m_links[link].m_n[1] - &(softBody->m_nodes[0]);
806
+
807
+ btSoftBodyLinkData::LinkDescription newLink(vertexIndex0 + firstVertex, vertexIndex1 + firstVertex, softBody->m_links[link].m_material->m_kLST);
808
+ newLink.setLinkStrength(1.f);
809
+ getLinkData().setLinkAt(newLink, firstLink + link);
810
+ }
811
+
812
+ newSoftBody->setFirstVertex( firstVertex );
813
+ newSoftBody->setFirstTriangle( firstTriangle );
814
+ newSoftBody->setNumVertices( numVertices );
815
+ newSoftBody->setMaxVertices( maxVertices );
816
+ newSoftBody->setNumTriangles( numTriangles );
817
+ newSoftBody->setMaxTriangles( maxTriangles );
818
+ newSoftBody->setFirstLink( firstLink );
819
+ newSoftBody->setNumLinks( numLinks );
820
+
821
+ // Find maximum piterations and viterations
822
+ int piterations = softBody->m_cfg.piterations;
823
+
824
+ if ( piterations > maxPiterations )
825
+ maxPiterations = piterations;
826
+
827
+ int viterations = softBody->m_cfg.viterations;
828
+
829
+ if ( viterations > maxViterations )
830
+ maxViterations = viterations;
831
+
832
+ // zero mass
833
+ for( int vertex = 0; vertex < numVertices; ++vertex )
834
+ {
835
+ if ( softBody->m_nodes[vertex].m_im == 0 )
836
+ {
837
+ AnchorNodeInfoCL nodeInfo;
838
+ nodeInfo.clVertexIndex = firstVertex + vertex;
839
+ nodeInfo.pNode = &softBody->m_nodes[vertex];
840
+
841
+ m_anchorNodeInfoArray.push_back(nodeInfo);
842
+ }
843
+ }
844
+
845
+ // anchor position
846
+ if ( numVertices > 0 )
847
+ {
848
+ for ( int anchorIndex = 0; anchorIndex < softBody->m_anchors.size(); anchorIndex++ )
849
+ {
850
+ btSoftBody::Node* anchorNode = softBody->m_anchors[anchorIndex].m_node;
851
+ btSoftBody::Node* firstNode = &softBody->m_nodes[0];
852
+
853
+ AnchorNodeInfoCL nodeInfo;
854
+ nodeInfo.clVertexIndex = firstVertex + (int)(anchorNode - firstNode);
855
+ nodeInfo.pNode = anchorNode;
856
+
857
+ m_anchorNodeInfoArray.push_back(nodeInfo);
858
+ }
859
+ }
860
+ }
861
+
862
+
863
+ m_anchorPosition.clear();
864
+ m_anchorPosition.resize(m_anchorNodeInfoArray.size());
865
+
866
+ for ( int anchorNode = 0; anchorNode < m_anchorNodeInfoArray.size(); anchorNode++ )
867
+ {
868
+ const AnchorNodeInfoCL& anchorNodeInfo = m_anchorNodeInfoArray[anchorNode];
869
+ m_anchorIndex[anchorNodeInfo.clVertexIndex] = anchorNode;
870
+ getVertexData().getInverseMass(anchorNodeInfo.clVertexIndex) = 0.0f;
871
+ }
872
+
873
+ updateConstants(0.f);
874
+
875
+ // set position and velocity iterations
876
+ setNumberOfPositionIterations(maxPiterations);
877
+ setNumberOfVelocityIterations(maxViterations);
878
+
879
+ // set wind velocity
880
+ m_perClothWindVelocity.resize( m_softBodySet.size() );
881
+ for( int softBodyIndex = 0; softBodyIndex < m_softBodySet.size(); ++softBodyIndex )
882
+ {
883
+ btSoftBody *softBody = m_softBodySet[softBodyIndex]->getSoftBody();
884
+ m_perClothWindVelocity[softBodyIndex] = toVector3(softBody->getWindVelocity());
885
+ }
886
+
887
+ m_clPerClothWindVelocity.changedOnCPU();
888
+
889
+ // generate batches
890
+ m_linkData.generateBatches();
891
+ m_triangleData.generateBatches();
892
+
893
+ // Build the shaders to match the batching parameters
894
+ buildShaders();
895
+ }
896
+ }
897
+
898
+
899
+ btSoftBodyLinkData &btOpenCLSoftBodySolver::getLinkData()
900
+ {
901
+ // TODO: Consider setting link data to "changed" here
902
+ return m_linkData;
903
+ }
904
+
905
+ btSoftBodyVertexData &btOpenCLSoftBodySolver::getVertexData()
906
+ {
907
+ // TODO: Consider setting vertex data to "changed" here
908
+ return m_vertexData;
909
+ }
910
+
911
+ btSoftBodyTriangleData &btOpenCLSoftBodySolver::getTriangleData()
912
+ {
913
+ // TODO: Consider setting triangle data to "changed" here
914
+ return m_triangleData;
915
+ }
916
+
917
+ void btOpenCLSoftBodySolver::resetNormalsAndAreas( int numVertices )
918
+ {
919
+ cl_int ciErrNum;
920
+ ciErrNum = clSetKernelArg(m_resetNormalsAndAreasKernel, 0, sizeof(numVertices), (void*)&numVertices); //oclCHECKERROR(ciErrNum, CL_SUCCESS);
921
+ ciErrNum = clSetKernelArg(m_resetNormalsAndAreasKernel, 1, sizeof(cl_mem), (void*)&m_vertexData.m_clVertexNormal.m_buffer);//oclCHECKERROR(ciErrNum, CL_SUCCESS);
922
+ ciErrNum = clSetKernelArg(m_resetNormalsAndAreasKernel, 2, sizeof(cl_mem), (void*)&m_vertexData.m_clVertexArea.m_buffer); //oclCHECKERROR(ciErrNum, CL_SUCCESS);
923
+ size_t numWorkItems = m_defaultWorkGroupSize*((numVertices + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
924
+
925
+ if (numWorkItems)
926
+ {
927
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue, m_resetNormalsAndAreasKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize, 0,0,0 );
928
+
929
+ if( ciErrNum != CL_SUCCESS )
930
+ {
931
+ btAssert( 0 && "enqueueNDRangeKernel(m_resetNormalsAndAreasKernel)" );
932
+ }
933
+ }
934
+
935
+ }
936
+
937
+ void btOpenCLSoftBodySolver::normalizeNormalsAndAreas( int numVertices )
938
+ {
939
+ cl_int ciErrNum;
940
+
941
+ ciErrNum = clSetKernelArg(m_normalizeNormalsAndAreasKernel, 0, sizeof(int),(void*) &numVertices);
942
+ ciErrNum = clSetKernelArg(m_normalizeNormalsAndAreasKernel, 1, sizeof(cl_mem), &m_vertexData.m_clVertexTriangleCount.m_buffer);
943
+ ciErrNum = clSetKernelArg(m_normalizeNormalsAndAreasKernel, 2, sizeof(cl_mem), &m_vertexData.m_clVertexNormal.m_buffer);
944
+ ciErrNum = clSetKernelArg(m_normalizeNormalsAndAreasKernel, 3, sizeof(cl_mem), &m_vertexData.m_clVertexArea.m_buffer);
945
+ size_t numWorkItems = m_defaultWorkGroupSize*((numVertices + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
946
+ if (numWorkItems)
947
+ {
948
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue, m_normalizeNormalsAndAreasKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize, 0,0,0);
949
+ if( ciErrNum != CL_SUCCESS )
950
+ {
951
+ btAssert( 0 && "enqueueNDRangeKernel(m_normalizeNormalsAndAreasKernel)");
952
+ }
953
+ }
954
+
955
+ }
956
+
957
+ void btOpenCLSoftBodySolver::executeUpdateSoftBodies( int firstTriangle, int numTriangles )
958
+ {
959
+ cl_int ciErrNum;
960
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 0, sizeof(int), (void*) &firstTriangle);
961
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 1, sizeof(int), &numTriangles);
962
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 2, sizeof(cl_mem), &m_triangleData.m_clVertexIndices.m_buffer);
963
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 3, sizeof(cl_mem), &m_vertexData.m_clVertexPosition.m_buffer);
964
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 4, sizeof(cl_mem), &m_vertexData.m_clVertexNormal.m_buffer);
965
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 5, sizeof(cl_mem), &m_vertexData.m_clVertexArea.m_buffer);
966
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 6, sizeof(cl_mem), &m_triangleData.m_clNormal.m_buffer);
967
+ ciErrNum = clSetKernelArg(m_updateSoftBodiesKernel, 7, sizeof(cl_mem), &m_triangleData.m_clArea.m_buffer);
968
+
969
+ size_t numWorkItems = m_defaultWorkGroupSize*((numTriangles + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
970
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue, m_updateSoftBodiesKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize,0,0,0);
971
+ if( ciErrNum != CL_SUCCESS )
972
+ {
973
+ btAssert( 0 && "enqueueNDRangeKernel(m_normalizeNormalsAndAreasKernel)");
974
+ }
975
+
976
+ }
977
+
978
+ void btOpenCLSoftBodySolver::updateSoftBodies()
979
+ {
980
+ using namespace Vectormath::Aos;
981
+
982
+
983
+ int numVertices = m_vertexData.getNumVertices();
984
+ int numTriangles = m_triangleData.getNumTriangles();
985
+
986
+ // Ensure data is on accelerator
987
+ m_vertexData.moveToAccelerator();
988
+ m_triangleData.moveToAccelerator();
989
+
990
+ resetNormalsAndAreas( numVertices );
991
+
992
+
993
+ // Go through triangle batches so updates occur correctly
994
+ for( int batchIndex = 0; batchIndex < m_triangleData.m_batchStartLengths.size(); ++batchIndex )
995
+ {
996
+
997
+ int startTriangle = m_triangleData.m_batchStartLengths[batchIndex].first;
998
+ int numTriangles = m_triangleData.m_batchStartLengths[batchIndex].second;
999
+
1000
+ executeUpdateSoftBodies( startTriangle, numTriangles );
1001
+ }
1002
+
1003
+
1004
+ normalizeNormalsAndAreas( numVertices );
1005
+ } // updateSoftBodies
1006
+
1007
+
1008
+ Vectormath::Aos::Vector3 btOpenCLSoftBodySolver::ProjectOnAxis( const Vectormath::Aos::Vector3 &v, const Vectormath::Aos::Vector3 &a )
1009
+ {
1010
+ return a*Vectormath::Aos::dot(v, a);
1011
+ }
1012
+
1013
+ void btOpenCLSoftBodySolver::ApplyClampedForce( float solverdt, const Vectormath::Aos::Vector3 &force, const Vectormath::Aos::Vector3 &vertexVelocity, float inverseMass, Vectormath::Aos::Vector3 &vertexForce )
1014
+ {
1015
+ float dtInverseMass = solverdt*inverseMass;
1016
+ if( Vectormath::Aos::lengthSqr(force * dtInverseMass) > Vectormath::Aos::lengthSqr(vertexVelocity) )
1017
+ {
1018
+ vertexForce -= ProjectOnAxis( vertexVelocity, normalize( force ) )/dtInverseMass;
1019
+ } else {
1020
+ vertexForce += force;
1021
+ }
1022
+ }
1023
+
1024
+ void btOpenCLSoftBodySolver::updateFixedVertexPositions()
1025
+ {
1026
+ // Ensure data is on accelerator
1027
+ m_vertexData.moveToAccelerator();
1028
+ m_clAnchorPosition.moveToGPU();
1029
+ m_clAnchorIndex.moveToGPU();
1030
+
1031
+ cl_int ciErrNum ;
1032
+ int numVerts = m_vertexData.getNumVertices();
1033
+ ciErrNum = clSetKernelArg(m_updateFixedVertexPositionsKernel, 0, sizeof(int), &numVerts);
1034
+ ciErrNum = clSetKernelArg(m_updateFixedVertexPositionsKernel,1, sizeof(cl_mem), &m_clAnchorIndex.m_buffer);
1035
+ ciErrNum = clSetKernelArg(m_updateFixedVertexPositionsKernel,2, sizeof(cl_mem), &m_vertexData.m_clVertexPosition.m_buffer);
1036
+ ciErrNum = clSetKernelArg(m_updateFixedVertexPositionsKernel,3, sizeof(cl_mem), &m_clAnchorPosition.m_buffer);
1037
+
1038
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1039
+ if (numWorkItems)
1040
+ {
1041
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_updateFixedVertexPositionsKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize, 0,0,0);
1042
+ if( ciErrNum != CL_SUCCESS )
1043
+ {
1044
+ btAssert( 0 && "enqueueNDRangeKernel(m_updateFixedVertexPositionsKernel)");
1045
+ }
1046
+ }
1047
+
1048
+ }
1049
+
1050
+ void btOpenCLSoftBodySolver::applyForces( float solverdt )
1051
+ {
1052
+ // Ensure data is on accelerator
1053
+ m_vertexData.moveToAccelerator();
1054
+ m_clPerClothAcceleration.moveToGPU();
1055
+ m_clPerClothLiftFactor.moveToGPU();
1056
+ m_clPerClothDragFactor.moveToGPU();
1057
+ m_clPerClothMediumDensity.moveToGPU();
1058
+ m_clPerClothWindVelocity.moveToGPU();
1059
+
1060
+ cl_int ciErrNum ;
1061
+ int numVerts = m_vertexData.getNumVertices();
1062
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 0, sizeof(int), &numVerts);
1063
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 1, sizeof(float), &solverdt);
1064
+ float fl = FLT_EPSILON;
1065
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 2, sizeof(float), &fl);
1066
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 3, sizeof(cl_mem), &m_vertexData.m_clClothIdentifier.m_buffer);
1067
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 4, sizeof(cl_mem), &m_vertexData.m_clVertexNormal.m_buffer);
1068
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 5, sizeof(cl_mem), &m_vertexData.m_clVertexArea.m_buffer);
1069
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 6, sizeof(cl_mem), &m_vertexData.m_clVertexInverseMass.m_buffer);
1070
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 7, sizeof(cl_mem), &m_clPerClothLiftFactor.m_buffer);
1071
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 8 ,sizeof(cl_mem), &m_clPerClothDragFactor.m_buffer);
1072
+ ciErrNum = clSetKernelArg(m_applyForcesKernel, 9, sizeof(cl_mem), &m_clPerClothWindVelocity.m_buffer);
1073
+ ciErrNum = clSetKernelArg(m_applyForcesKernel,10, sizeof(cl_mem), &m_clPerClothAcceleration.m_buffer);
1074
+ ciErrNum = clSetKernelArg(m_applyForcesKernel,11, sizeof(cl_mem), &m_clPerClothMediumDensity.m_buffer);
1075
+ ciErrNum = clSetKernelArg(m_applyForcesKernel,12, sizeof(cl_mem), &m_vertexData.m_clVertexForceAccumulator.m_buffer);
1076
+ ciErrNum = clSetKernelArg(m_applyForcesKernel,13, sizeof(cl_mem), &m_vertexData.m_clVertexVelocity.m_buffer);
1077
+
1078
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1079
+ if (numWorkItems)
1080
+ {
1081
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_applyForcesKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize, 0,0,0);
1082
+ if( ciErrNum != CL_SUCCESS )
1083
+ {
1084
+ btAssert( 0 && "enqueueNDRangeKernel(m_applyForcesKernel)");
1085
+ }
1086
+ }
1087
+
1088
+ }
1089
+
1090
+ /**
1091
+ * Integrate motion on the solver.
1092
+ */
1093
+ void btOpenCLSoftBodySolver::integrate( float solverdt )
1094
+ {
1095
+ // Ensure data is on accelerator
1096
+ m_vertexData.moveToAccelerator();
1097
+
1098
+ cl_int ciErrNum;
1099
+ int numVerts = m_vertexData.getNumVertices();
1100
+ ciErrNum = clSetKernelArg(m_integrateKernel, 0, sizeof(int), &numVerts);
1101
+ ciErrNum = clSetKernelArg(m_integrateKernel, 1, sizeof(float), &solverdt);
1102
+ ciErrNum = clSetKernelArg(m_integrateKernel, 2, sizeof(cl_mem), &m_vertexData.m_clVertexInverseMass.m_buffer);
1103
+ ciErrNum = clSetKernelArg(m_integrateKernel, 3, sizeof(cl_mem), &m_vertexData.m_clVertexPosition.m_buffer);
1104
+ ciErrNum = clSetKernelArg(m_integrateKernel, 4, sizeof(cl_mem), &m_vertexData.m_clVertexVelocity.m_buffer);
1105
+ ciErrNum = clSetKernelArg(m_integrateKernel, 5, sizeof(cl_mem), &m_vertexData.m_clVertexPreviousPosition.m_buffer);
1106
+ ciErrNum = clSetKernelArg(m_integrateKernel, 6, sizeof(cl_mem), &m_vertexData.m_clVertexForceAccumulator.m_buffer);
1107
+
1108
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1109
+ if (numWorkItems)
1110
+ {
1111
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_integrateKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize,0,0,0);
1112
+ if( ciErrNum != CL_SUCCESS )
1113
+ {
1114
+ btAssert( 0 && "enqueueNDRangeKernel(m_integrateKernel)");
1115
+ }
1116
+ }
1117
+
1118
+ }
1119
+
1120
+ float btOpenCLSoftBodySolver::computeTriangleArea(
1121
+ const Vectormath::Aos::Point3 &vertex0,
1122
+ const Vectormath::Aos::Point3 &vertex1,
1123
+ const Vectormath::Aos::Point3 &vertex2 )
1124
+ {
1125
+ Vectormath::Aos::Vector3 a = vertex1 - vertex0;
1126
+ Vectormath::Aos::Vector3 b = vertex2 - vertex0;
1127
+ Vectormath::Aos::Vector3 crossProduct = cross(a, b);
1128
+ float area = length( crossProduct );
1129
+ return area;
1130
+ }
1131
+
1132
+
1133
+ void btOpenCLSoftBodySolver::updateBounds()
1134
+ {
1135
+ for( int softBodyIndex = 0; softBodyIndex < m_softBodySet.size(); ++softBodyIndex )
1136
+ {
1137
+ btVector3 minBound(-1e30,-1e30,-1e30), maxBound(1e30,1e30,1e30);
1138
+ m_softBodySet[softBodyIndex]->updateBounds( minBound, maxBound );
1139
+ }
1140
+
1141
+ } // btOpenCLSoftBodySolver::updateBounds
1142
+
1143
+
1144
+ void btOpenCLSoftBodySolver::updateConstants( float timeStep )
1145
+ {
1146
+
1147
+ using namespace Vectormath::Aos;
1148
+
1149
+ if( m_updateSolverConstants )
1150
+ {
1151
+ m_updateSolverConstants = false;
1152
+
1153
+ // Will have to redo this if we change the structure (tear, maybe) or various other possible changes
1154
+
1155
+ // Initialise link constants
1156
+ const int numLinks = m_linkData.getNumLinks();
1157
+ for( int linkIndex = 0; linkIndex < numLinks; ++linkIndex )
1158
+ {
1159
+ btSoftBodyLinkData::LinkNodePair &vertices( m_linkData.getVertexPair(linkIndex) );
1160
+ m_linkData.getRestLength(linkIndex) = length((m_vertexData.getPosition( vertices.vertex0 ) - m_vertexData.getPosition( vertices.vertex1 )));
1161
+ float invMass0 = m_vertexData.getInverseMass(vertices.vertex0);
1162
+ float invMass1 = m_vertexData.getInverseMass(vertices.vertex1);
1163
+ float linearStiffness = m_linkData.getLinearStiffnessCoefficient(linkIndex);
1164
+ float massLSC = (invMass0 + invMass1)/linearStiffness;
1165
+ m_linkData.getMassLSC(linkIndex) = massLSC;
1166
+ float restLength = m_linkData.getRestLength(linkIndex);
1167
+ float restLengthSquared = restLength*restLength;
1168
+ m_linkData.getRestLengthSquared(linkIndex) = restLengthSquared;
1169
+ }
1170
+ }
1171
+
1172
+ }
1173
+
1174
+ class QuickSortCompare
1175
+ {
1176
+ public:
1177
+
1178
+ bool operator() ( const CollisionShapeDescription& a, const CollisionShapeDescription& b ) const
1179
+ {
1180
+ return ( a.softBodyIdentifier < b.softBodyIdentifier );
1181
+ }
1182
+ };
1183
+
1184
+
1185
+ /**
1186
+ * Sort the collision object details array and generate indexing into it for the per-cloth collision object array.
1187
+ */
1188
+ void btOpenCLSoftBodySolver::prepareCollisionConstraints()
1189
+ {
1190
+ // First do a simple sort on the collision objects
1191
+ btAlignedObjectArray<int> numObjectsPerClothPrefixSum;
1192
+ btAlignedObjectArray<int> numObjectsPerCloth;
1193
+ numObjectsPerCloth.resize( m_softBodySet.size(), 0 );
1194
+ numObjectsPerClothPrefixSum.resize( m_softBodySet.size(), 0 );
1195
+
1196
+
1197
+
1198
+ m_collisionObjectDetails.quickSort( QuickSortCompare() );
1199
+
1200
+ if (!m_perClothCollisionObjects.size())
1201
+ return;
1202
+
1203
+ // Generating indexing for perClothCollisionObjects
1204
+ // First clear the previous values with the "no collision object for cloth" constant
1205
+ for( int clothIndex = 0; clothIndex < m_perClothCollisionObjects.size(); ++clothIndex )
1206
+ {
1207
+ m_perClothCollisionObjects[clothIndex].firstObject = -1;
1208
+ m_perClothCollisionObjects[clothIndex].endObject = -1;
1209
+ }
1210
+ int currentCloth = 0;
1211
+ int startIndex = 0;
1212
+ for( int collisionObject = 0; collisionObject < m_collisionObjectDetails.size(); ++collisionObject )
1213
+ {
1214
+ int nextCloth = m_collisionObjectDetails[collisionObject].softBodyIdentifier;
1215
+ if( nextCloth != currentCloth )
1216
+ {
1217
+ // Changed cloth in the array
1218
+ // Set the end index and the range is what we need for currentCloth
1219
+ m_perClothCollisionObjects[currentCloth].firstObject = startIndex;
1220
+ m_perClothCollisionObjects[currentCloth].endObject = collisionObject;
1221
+ currentCloth = nextCloth;
1222
+ startIndex = collisionObject;
1223
+ }
1224
+ }
1225
+
1226
+ // And update last cloth
1227
+ m_perClothCollisionObjects[currentCloth].firstObject = startIndex;
1228
+ m_perClothCollisionObjects[currentCloth].endObject = m_collisionObjectDetails.size();
1229
+
1230
+ } // btOpenCLSoftBodySolver::prepareCollisionConstraints
1231
+
1232
+
1233
+
1234
+ void btOpenCLSoftBodySolver::solveConstraints( float solverdt )
1235
+ {
1236
+
1237
+ using Vectormath::Aos::Vector3;
1238
+ using Vectormath::Aos::Point3;
1239
+ using Vectormath::Aos::lengthSqr;
1240
+ using Vectormath::Aos::dot;
1241
+
1242
+ // Prepare links
1243
+ int numLinks = m_linkData.getNumLinks();
1244
+ int numVertices = m_vertexData.getNumVertices();
1245
+
1246
+ float kst = 1.f;
1247
+ float ti = 0.f;
1248
+
1249
+
1250
+ m_clPerClothDampingFactor.moveToGPU();
1251
+ m_clPerClothVelocityCorrectionCoefficient.moveToGPU();
1252
+
1253
+
1254
+ // Ensure data is on accelerator
1255
+ m_linkData.moveToAccelerator();
1256
+ m_vertexData.moveToAccelerator();
1257
+
1258
+ prepareLinks();
1259
+
1260
+
1261
+
1262
+ for( int iteration = 0; iteration < m_numberOfVelocityIterations ; ++iteration )
1263
+ {
1264
+ for( int i = 0; i < m_linkData.m_batchStartLengths.size(); ++i )
1265
+ {
1266
+ int startLink = m_linkData.m_batchStartLengths[i].start;
1267
+ int numLinks = m_linkData.m_batchStartLengths[i].length;
1268
+
1269
+ solveLinksForVelocity( startLink, numLinks, kst );
1270
+ }
1271
+ }
1272
+
1273
+
1274
+ prepareCollisionConstraints();
1275
+
1276
+ // Compute new positions from velocity
1277
+ // Also update the previous position so that our position computation is now based on the new position from the velocity solution
1278
+ // rather than based directly on the original positions
1279
+ if( m_numberOfVelocityIterations > 0 )
1280
+ {
1281
+ updateVelocitiesFromPositionsWithVelocities( 1.f/solverdt );
1282
+ } else {
1283
+ updateVelocitiesFromPositionsWithoutVelocities( 1.f/solverdt );
1284
+ }
1285
+
1286
+ // Solve position
1287
+ for( int iteration = 0; iteration < m_numberOfPositionIterations ; ++iteration )
1288
+ {
1289
+ for( int i = 0; i < m_linkData.m_batchStartLengths.size(); ++i )
1290
+ {
1291
+ int startLink = m_linkData.m_batchStartLengths[i].start;
1292
+ int numLinks = m_linkData.m_batchStartLengths[i].length;
1293
+
1294
+ solveLinksForPosition( startLink, numLinks, kst, ti );
1295
+ }
1296
+
1297
+ } // for( int iteration = 0; iteration < m_numberOfPositionIterations ; ++iteration )
1298
+
1299
+
1300
+ // At this point assume that the force array is blank - we will overwrite it
1301
+ solveCollisionsAndUpdateVelocities( 1.f/solverdt );
1302
+
1303
+ }
1304
+
1305
+
1306
+ //////////////////////////////////////
1307
+ // Kernel dispatches
1308
+ void btOpenCLSoftBodySolver::prepareLinks()
1309
+ {
1310
+ cl_int ciErrNum;
1311
+ int numLinks = m_linkData.getNumLinks();
1312
+ ciErrNum = clSetKernelArg(m_prepareLinksKernel,0, sizeof(int), &numLinks);
1313
+ ciErrNum = clSetKernelArg(m_prepareLinksKernel,1, sizeof(cl_mem), &m_linkData.m_clLinks.m_buffer);
1314
+ ciErrNum = clSetKernelArg(m_prepareLinksKernel,2, sizeof(cl_mem), &m_linkData.m_clLinksMassLSC.m_buffer);
1315
+ ciErrNum = clSetKernelArg(m_prepareLinksKernel,3, sizeof(cl_mem), &m_vertexData.m_clVertexPreviousPosition.m_buffer);
1316
+ ciErrNum = clSetKernelArg(m_prepareLinksKernel,4, sizeof(cl_mem), &m_linkData.m_clLinksLengthRatio.m_buffer);
1317
+ ciErrNum = clSetKernelArg(m_prepareLinksKernel,5, sizeof(cl_mem), &m_linkData.m_clLinksCLength.m_buffer);
1318
+
1319
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_linkData.getNumLinks() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1320
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_prepareLinksKernel, 1 , NULL, &numWorkItems, &m_defaultWorkGroupSize,0,0,0);
1321
+ if( ciErrNum != CL_SUCCESS )
1322
+ {
1323
+ btAssert( 0 && "enqueueNDRangeKernel(m_prepareLinksKernel)");
1324
+ }
1325
+
1326
+ }
1327
+
1328
+ void btOpenCLSoftBodySolver::updatePositionsFromVelocities( float solverdt )
1329
+ {
1330
+ cl_int ciErrNum;
1331
+ int numVerts = m_vertexData.getNumVertices();
1332
+ ciErrNum = clSetKernelArg(m_updatePositionsFromVelocitiesKernel,0, sizeof(int), &numVerts);
1333
+ ciErrNum = clSetKernelArg(m_updatePositionsFromVelocitiesKernel,1, sizeof(float), &solverdt);
1334
+ ciErrNum = clSetKernelArg(m_updatePositionsFromVelocitiesKernel,2, sizeof(cl_mem), &m_vertexData.m_clVertexVelocity.m_buffer);
1335
+ ciErrNum = clSetKernelArg(m_updatePositionsFromVelocitiesKernel,3, sizeof(cl_mem), &m_vertexData.m_clVertexPreviousPosition.m_buffer);
1336
+ ciErrNum = clSetKernelArg(m_updatePositionsFromVelocitiesKernel,4, sizeof(cl_mem), &m_vertexData.m_clVertexPosition.m_buffer);
1337
+
1338
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1339
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_updatePositionsFromVelocitiesKernel, 1, NULL, &numWorkItems,&m_defaultWorkGroupSize,0,0,0);
1340
+ if( ciErrNum != CL_SUCCESS )
1341
+ {
1342
+ btAssert( 0 && "enqueueNDRangeKernel(m_updatePositionsFromVelocitiesKernel)");
1343
+ }
1344
+
1345
+ }
1346
+
1347
+ void btOpenCLSoftBodySolver::solveLinksForPosition( int startLink, int numLinks, float kst, float ti )
1348
+ {
1349
+ cl_int ciErrNum;
1350
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,0, sizeof(int), &startLink);
1351
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,1, sizeof(int), &numLinks);
1352
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,2, sizeof(float), &kst);
1353
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,3, sizeof(float), &ti);
1354
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,4, sizeof(cl_mem), &m_linkData.m_clLinks.m_buffer);
1355
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,5, sizeof(cl_mem), &m_linkData.m_clLinksMassLSC.m_buffer);
1356
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,6, sizeof(cl_mem), &m_linkData.m_clLinksRestLengthSquared.m_buffer);
1357
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,7, sizeof(cl_mem), &m_vertexData.m_clVertexInverseMass.m_buffer);
1358
+ ciErrNum = clSetKernelArg(m_solvePositionsFromLinksKernel,8, sizeof(cl_mem), &m_vertexData.m_clVertexPosition.m_buffer);
1359
+
1360
+ size_t numWorkItems = m_defaultWorkGroupSize*((numLinks + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1361
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_solvePositionsFromLinksKernel,1,NULL,&numWorkItems,&m_defaultWorkGroupSize,0,0,0);
1362
+ if( ciErrNum!= CL_SUCCESS )
1363
+ {
1364
+ btAssert( 0 && "enqueueNDRangeKernel(m_solvePositionsFromLinksKernel)");
1365
+ }
1366
+
1367
+ } // solveLinksForPosition
1368
+
1369
+
1370
+ void btOpenCLSoftBodySolver::solveLinksForVelocity( int startLink, int numLinks, float kst )
1371
+ {
1372
+ cl_int ciErrNum;
1373
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 0, sizeof(int), &startLink);
1374
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 1, sizeof(int), &numLinks);
1375
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 2, sizeof(float), &kst);
1376
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 3, sizeof(cl_mem), &m_linkData.m_clLinks.m_buffer);
1377
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 4, sizeof(cl_mem), &m_linkData.m_clLinksLengthRatio.m_buffer);
1378
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 5, sizeof(cl_mem), &m_linkData.m_clLinksCLength.m_buffer);
1379
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 6, sizeof(cl_mem), &m_vertexData.m_clVertexInverseMass.m_buffer);
1380
+ ciErrNum = clSetKernelArg(m_vSolveLinksKernel, 7, sizeof(cl_mem), &m_vertexData.m_clVertexVelocity.m_buffer);
1381
+
1382
+ size_t numWorkItems = m_defaultWorkGroupSize*((numLinks + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1383
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_vSolveLinksKernel,1,NULL,&numWorkItems, &m_defaultWorkGroupSize,0,0,0);
1384
+ if( ciErrNum != CL_SUCCESS )
1385
+ {
1386
+ btAssert( 0 && "enqueueNDRangeKernel(m_vSolveLinksKernel)");
1387
+ }
1388
+
1389
+ }
1390
+
1391
+ void btOpenCLSoftBodySolver::updateVelocitiesFromPositionsWithVelocities( float isolverdt )
1392
+ {
1393
+ cl_int ciErrNum;
1394
+ int numVerts = m_vertexData.getNumVertices();
1395
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel,0, sizeof(int), &numVerts);
1396
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 1, sizeof(float), &isolverdt);
1397
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 2, sizeof(cl_mem), &m_vertexData.m_clVertexPosition.m_buffer);
1398
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 3, sizeof(cl_mem), &m_vertexData.m_clVertexPreviousPosition.m_buffer);
1399
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 4, sizeof(cl_mem), &m_vertexData.m_clClothIdentifier.m_buffer);
1400
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 5, sizeof(cl_mem), &m_clPerClothVelocityCorrectionCoefficient.m_buffer);
1401
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 6, sizeof(cl_mem), &m_clPerClothDampingFactor.m_buffer);
1402
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 7, sizeof(cl_mem), &m_vertexData.m_clVertexVelocity.m_buffer);
1403
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithVelocitiesKernel, 8, sizeof(cl_mem), &m_vertexData.m_clVertexForceAccumulator.m_buffer);
1404
+
1405
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1406
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_updateVelocitiesFromPositionsWithVelocitiesKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize,0,0,0);
1407
+ if( ciErrNum != CL_SUCCESS )
1408
+ {
1409
+ btAssert( 0 && "enqueueNDRangeKernel(m_updateVelocitiesFromPositionsWithVelocitiesKernel)");
1410
+ }
1411
+
1412
+
1413
+ } // updateVelocitiesFromPositionsWithVelocities
1414
+
1415
+ void btOpenCLSoftBodySolver::updateVelocitiesFromPositionsWithoutVelocities( float isolverdt )
1416
+ {
1417
+ cl_int ciErrNum;
1418
+ int numVerts = m_vertexData.getNumVertices();
1419
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 0, sizeof(int), &numVerts);
1420
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 1, sizeof(float), &isolverdt);
1421
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 2, sizeof(cl_mem),&m_vertexData.m_clVertexPosition.m_buffer);
1422
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 3, sizeof(cl_mem),&m_vertexData.m_clVertexPreviousPosition.m_buffer);
1423
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 4, sizeof(cl_mem),&m_vertexData.m_clClothIdentifier.m_buffer);
1424
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 5, sizeof(cl_mem),&m_clPerClothDampingFactor.m_buffer);
1425
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 6, sizeof(cl_mem),&m_vertexData.m_clVertexVelocity.m_buffer);
1426
+ ciErrNum = clSetKernelArg(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 7, sizeof(cl_mem),&m_vertexData.m_clVertexForceAccumulator.m_buffer);
1427
+
1428
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1429
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_updateVelocitiesFromPositionsWithoutVelocitiesKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize,0,0,0);
1430
+ if( ciErrNum != CL_SUCCESS )
1431
+ {
1432
+ btAssert( 0 && "enqueueNDRangeKernel(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel)");
1433
+ }
1434
+
1435
+ } // updateVelocitiesFromPositionsWithoutVelocities
1436
+
1437
+
1438
+
1439
+ void btOpenCLSoftBodySolver::solveCollisionsAndUpdateVelocities( float isolverdt )
1440
+ {
1441
+ // Copy kernel parameters to GPU
1442
+ m_vertexData.moveToAccelerator();
1443
+ m_clPerClothFriction.moveToGPU();
1444
+ m_clPerClothDampingFactor.moveToGPU();
1445
+ m_clPerClothCollisionObjects.moveToGPU();
1446
+ m_clCollisionObjectDetails.moveToGPU();
1447
+
1448
+ cl_int ciErrNum;
1449
+ int numVerts = m_vertexData.getNumVertices();
1450
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 0, sizeof(int), &numVerts);
1451
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 1, sizeof(int), &isolverdt);
1452
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 2, sizeof(cl_mem),&m_vertexData.m_clClothIdentifier.m_buffer);
1453
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 3, sizeof(cl_mem),&m_vertexData.m_clVertexPreviousPosition.m_buffer);
1454
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 4, sizeof(cl_mem),&m_clPerClothFriction.m_buffer);
1455
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 5, sizeof(cl_mem),&m_clPerClothDampingFactor.m_buffer);
1456
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 6, sizeof(cl_mem),&m_clPerClothCollisionObjects.m_buffer);
1457
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 7, sizeof(cl_mem),&m_clCollisionObjectDetails.m_buffer);
1458
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 8, sizeof(cl_mem),&m_vertexData.m_clVertexForceAccumulator.m_buffer);
1459
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 9, sizeof(cl_mem),&m_vertexData.m_clVertexVelocity.m_buffer);
1460
+ ciErrNum = clSetKernelArg(m_solveCollisionsAndUpdateVelocitiesKernel, 10, sizeof(cl_mem),&m_vertexData.m_clVertexPosition.m_buffer);
1461
+
1462
+ size_t numWorkItems = m_defaultWorkGroupSize*((m_vertexData.getNumVertices() + (m_defaultWorkGroupSize-1)) / m_defaultWorkGroupSize);
1463
+ if (numWorkItems)
1464
+ {
1465
+ ciErrNum = clEnqueueNDRangeKernel(m_cqCommandQue,m_solveCollisionsAndUpdateVelocitiesKernel, 1, NULL, &numWorkItems, &m_defaultWorkGroupSize,0,0,0);
1466
+ if( ciErrNum != CL_SUCCESS )
1467
+ {
1468
+ btAssert( 0 && "enqueueNDRangeKernel(m_updateVelocitiesFromPositionsWithoutVelocitiesKernel)");
1469
+ }
1470
+ }
1471
+
1472
+ } // btOpenCLSoftBodySolver::updateVelocitiesFromPositionsWithoutVelocities
1473
+
1474
+
1475
+
1476
+ // End kernel dispatches
1477
+ /////////////////////////////////////
1478
+
1479
+
1480
+ void btSoftBodySolverOutputCLtoCPU::copySoftBodyToVertexBuffer( const btSoftBody * const softBody, btVertexBufferDescriptor *vertexBuffer )
1481
+ {
1482
+
1483
+ btSoftBodySolver *solver = softBody->getSoftBodySolver();
1484
+ btAssert( solver->getSolverType() == btSoftBodySolver::CL_SOLVER || solver->getSolverType() == btSoftBodySolver::CL_SIMD_SOLVER );
1485
+ btOpenCLSoftBodySolver *dxSolver = static_cast< btOpenCLSoftBodySolver * >( solver );
1486
+
1487
+ btOpenCLAcceleratedSoftBodyInterface* currentCloth = dxSolver->findSoftBodyInterface( softBody );
1488
+ btSoftBodyVertexDataOpenCL &vertexData( dxSolver->m_vertexData );
1489
+
1490
+
1491
+ const int firstVertex = currentCloth->getFirstVertex();
1492
+ const int lastVertex = firstVertex + currentCloth->getNumVertices();
1493
+
1494
+ if( vertexBuffer->getBufferType() == btVertexBufferDescriptor::CPU_BUFFER )
1495
+ {
1496
+ const btCPUVertexBufferDescriptor *cpuVertexBuffer = static_cast< btCPUVertexBufferDescriptor* >(vertexBuffer);
1497
+ float *basePointer = cpuVertexBuffer->getBasePointer();
1498
+
1499
+ vertexData.m_clVertexPosition.copyFromGPU();
1500
+ vertexData.m_clVertexNormal.copyFromGPU();
1501
+
1502
+ if( vertexBuffer->hasVertexPositions() )
1503
+ {
1504
+ const int vertexOffset = cpuVertexBuffer->getVertexOffset();
1505
+ const int vertexStride = cpuVertexBuffer->getVertexStride();
1506
+ float *vertexPointer = basePointer + vertexOffset;
1507
+
1508
+ for( int vertexIndex = firstVertex; vertexIndex < lastVertex; ++vertexIndex )
1509
+ {
1510
+ Vectormath::Aos::Point3 position = vertexData.getPosition(vertexIndex);
1511
+ *(vertexPointer + 0) = position.getX();
1512
+ *(vertexPointer + 1) = position.getY();
1513
+ *(vertexPointer + 2) = position.getZ();
1514
+ vertexPointer += vertexStride;
1515
+ }
1516
+ }
1517
+ if( vertexBuffer->hasNormals() )
1518
+ {
1519
+ const int normalOffset = cpuVertexBuffer->getNormalOffset();
1520
+ const int normalStride = cpuVertexBuffer->getNormalStride();
1521
+ float *normalPointer = basePointer + normalOffset;
1522
+
1523
+ for( int vertexIndex = firstVertex; vertexIndex < lastVertex; ++vertexIndex )
1524
+ {
1525
+ Vectormath::Aos::Vector3 normal = vertexData.getNormal(vertexIndex);
1526
+ *(normalPointer + 0) = normal.getX();
1527
+ *(normalPointer + 1) = normal.getY();
1528
+ *(normalPointer + 2) = normal.getZ();
1529
+ normalPointer += normalStride;
1530
+ }
1531
+ }
1532
+ }
1533
+
1534
+ } // btSoftBodySolverOutputCLtoCPU::outputToVertexBuffers
1535
+
1536
+
1537
+
1538
+ cl_kernel CLFunctions::compileCLKernelFromString( const char* kernelSource, const char* kernelName, const char* additionalMacros ,const char* orgSrcFileNameForCaching)
1539
+ {
1540
+ printf("compiling kernelName: %s ",kernelName);
1541
+ cl_kernel kernel=0;
1542
+ cl_int ciErrNum;
1543
+ size_t program_length = strlen(kernelSource);
1544
+
1545
+ cl_program m_cpProgram = clCreateProgramWithSource(m_cxMainContext, 1, (const char**)&kernelSource, &program_length, &ciErrNum);
1546
+ // oclCHECKERROR(ciErrNum, CL_SUCCESS);
1547
+
1548
+ // Build the program with 'mad' Optimization option
1549
+
1550
+
1551
+ #ifdef MAC
1552
+ char* flags = "-cl-mad-enable -DMAC -DGUID_ARG";
1553
+ #else
1554
+ //const char* flags = "-DGUID_ARG= -fno-alias";
1555
+ const char* flags = "-DGUID_ARG= ";
1556
+ #endif
1557
+
1558
+ char* compileFlags = new char[strlen(additionalMacros) + strlen(flags) + 5];
1559
+ sprintf(compileFlags, "%s %s", flags, additionalMacros);
1560
+ ciErrNum = clBuildProgram(m_cpProgram, 0, NULL, compileFlags, NULL, NULL);
1561
+ if (ciErrNum != CL_SUCCESS)
1562
+ {
1563
+ size_t numDevices;
1564
+ clGetProgramInfo( m_cpProgram, CL_PROGRAM_DEVICES, 0, 0, &numDevices );
1565
+ cl_device_id *devices = new cl_device_id[numDevices];
1566
+ clGetProgramInfo( m_cpProgram, CL_PROGRAM_DEVICES, numDevices, devices, &numDevices );
1567
+ for( int i = 0; i < 2; ++i )
1568
+ {
1569
+ char *build_log;
1570
+ size_t ret_val_size;
1571
+ clGetProgramBuildInfo(m_cpProgram, devices[i], CL_PROGRAM_BUILD_LOG, 0, NULL, &ret_val_size);
1572
+ build_log = new char[ret_val_size+1];
1573
+ clGetProgramBuildInfo(m_cpProgram, devices[i], CL_PROGRAM_BUILD_LOG, ret_val_size, build_log, NULL);
1574
+
1575
+ // to be carefully, terminate with \0
1576
+ // there's no information in the reference whether the string is 0 terminated or not
1577
+ build_log[ret_val_size] = '\0';
1578
+
1579
+
1580
+ printf("Error in clBuildProgram, Line %u in file %s, Log: \n%s\n !!!\n\n", __LINE__, __FILE__, build_log);
1581
+ delete[] build_log;
1582
+ }
1583
+ #ifndef BT_SUPPRESS_OPENCL_ASSERTS
1584
+ btAssert(0);
1585
+ #endif //BT_SUPPRESS_OPENCL_ASSERTS
1586
+ m_kernelCompilationFailures++;
1587
+ return 0;
1588
+ }
1589
+
1590
+
1591
+ // Create the kernel
1592
+ kernel = clCreateKernel(m_cpProgram, kernelName, &ciErrNum);
1593
+ if (ciErrNum != CL_SUCCESS)
1594
+ {
1595
+ const char* msg = "";
1596
+ switch(ciErrNum)
1597
+ {
1598
+ case CL_INVALID_PROGRAM:
1599
+ msg = "Program is not a valid program object.";
1600
+ break;
1601
+ case CL_INVALID_PROGRAM_EXECUTABLE:
1602
+ msg = "There is no successfully built executable for program.";
1603
+ break;
1604
+ case CL_INVALID_KERNEL_NAME:
1605
+ msg = "kernel_name is not found in program.";
1606
+ break;
1607
+ case CL_INVALID_KERNEL_DEFINITION:
1608
+ msg = "the function definition for __kernel function given by kernel_name such as the number of arguments, the argument types are not the same for all devices for which the program executable has been built.";
1609
+ break;
1610
+ case CL_INVALID_VALUE:
1611
+ msg = "kernel_name is NULL.";
1612
+ break;
1613
+ case CL_OUT_OF_HOST_MEMORY:
1614
+ msg = "Failure to allocate resources required by the OpenCL implementation on the host.";
1615
+ break;
1616
+ default:
1617
+ {
1618
+ }
1619
+ }
1620
+
1621
+ printf("Error in clCreateKernel for kernel '%s', error is \"%s\", Line %u in file %s !!!\n\n", kernelName, msg, __LINE__, __FILE__);
1622
+
1623
+ #ifndef BT_SUPPRESS_OPENCL_ASSERTS
1624
+ btAssert(0);
1625
+ #endif //BT_SUPPRESS_OPENCL_ASSERTS
1626
+ m_kernelCompilationFailures++;
1627
+ return 0;
1628
+ }
1629
+
1630
+ printf("ready. \n");
1631
+ delete [] compileFlags;
1632
+ if (!kernel)
1633
+ m_kernelCompilationFailures++;
1634
+ return kernel;
1635
+
1636
+ }
1637
+
1638
+ void btOpenCLSoftBodySolver::predictMotion( float timeStep )
1639
+ {
1640
+ // Clear the collision shape array for the next frame
1641
+ // Ensure that the DX11 ones are moved off the device so they will be updated correctly
1642
+ m_clCollisionObjectDetails.changedOnCPU();
1643
+ m_clPerClothCollisionObjects.changedOnCPU();
1644
+ m_collisionObjectDetails.clear();
1645
+
1646
+ if ( m_bUpdateAnchoredNodePos )
1647
+ {
1648
+ // In OpenCL cloth solver, if softbody node has zero inverse mass(infinite mass) or anchor attached,
1649
+ // we need to update the node position in case the node or anchor is animated externally.
1650
+ // If there is no such node, we can eliminate the unnecessary CPU-to-GPU data trasferring.
1651
+ for ( int i = 0; i < m_anchorNodeInfoArray.size(); i++ )
1652
+ {
1653
+ const AnchorNodeInfoCL& anchorNodeInfo = m_anchorNodeInfoArray[i];
1654
+ btSoftBody::Node* node = anchorNodeInfo.pNode;
1655
+
1656
+ using Vectormath::Aos::Point3;
1657
+ Point3 pos((float)node->m_x.getX(), (float)node->m_x.getY(), (float)node->m_x.getZ());
1658
+ m_anchorPosition[i] = pos;
1659
+ }
1660
+
1661
+ if ( m_anchorNodeInfoArray.size() > 0 )
1662
+ m_clAnchorPosition.changedOnCPU();
1663
+
1664
+ updateFixedVertexPositions();
1665
+ }
1666
+
1667
+ {
1668
+ BT_PROFILE("applyForces");
1669
+ // Apply forces that we know about to the cloths
1670
+ applyForces( timeStep * getTimeScale() );
1671
+ }
1672
+
1673
+ {
1674
+ BT_PROFILE("integrate");
1675
+ // Itegrate motion for all soft bodies dealt with by the solver
1676
+ integrate( timeStep * getTimeScale() );
1677
+ }
1678
+
1679
+ {
1680
+ BT_PROFILE("updateBounds");
1681
+ updateBounds();
1682
+ }
1683
+ // End prediction work for solvers
1684
+ }
1685
+
1686
+ static Vectormath::Aos::Transform3 toTransform3( const btTransform &transform )
1687
+ {
1688
+ Vectormath::Aos::Transform3 outTransform;
1689
+ outTransform.setCol(0, toVector3(transform.getBasis().getColumn(0)));
1690
+ outTransform.setCol(1, toVector3(transform.getBasis().getColumn(1)));
1691
+ outTransform.setCol(2, toVector3(transform.getBasis().getColumn(2)));
1692
+ outTransform.setCol(3, toVector3(transform.getOrigin()));
1693
+ return outTransform;
1694
+ }
1695
+
1696
+ void btOpenCLAcceleratedSoftBodyInterface::updateBounds( const btVector3 &lowerBound, const btVector3 &upperBound )
1697
+ {
1698
+ float scalarMargin = (float)getSoftBody()->getCollisionShape()->getMargin();
1699
+ btVector3 vectorMargin( scalarMargin, scalarMargin, scalarMargin );
1700
+ m_softBody->m_bounds[0] = lowerBound - vectorMargin;
1701
+ m_softBody->m_bounds[1] = upperBound + vectorMargin;
1702
+ } // btOpenCLSoftBodySolver::btDX11AcceleratedSoftBodyInterface::updateBounds
1703
+
1704
+ void btOpenCLSoftBodySolver::processCollision( btSoftBody*, btSoftBody* )
1705
+ {
1706
+
1707
+ }
1708
+
1709
+ // Add the collision object to the set to deal with for a particular soft body
1710
+ void btOpenCLSoftBodySolver::processCollision( btSoftBody *softBody, btCollisionObject* collisionObject )
1711
+ {
1712
+ int softBodyIndex = findSoftBodyIndex( softBody );
1713
+
1714
+ if( softBodyIndex >= 0 )
1715
+ {
1716
+ btCollisionShape *collisionShape = collisionObject->getCollisionShape();
1717
+ float friction = collisionObject->getFriction();
1718
+ int shapeType = collisionShape->getShapeType();
1719
+ if( shapeType == CAPSULE_SHAPE_PROXYTYPE )
1720
+ {
1721
+ // Add to the list of expected collision objects
1722
+ CollisionShapeDescription newCollisionShapeDescription;
1723
+ newCollisionShapeDescription.softBodyIdentifier = softBodyIndex;
1724
+ newCollisionShapeDescription.collisionShapeType = shapeType;
1725
+ // TODO: May need to transpose this matrix either here or in HLSL
1726
+ newCollisionShapeDescription.shapeTransform = toTransform3(collisionObject->getWorldTransform());
1727
+ btCapsuleShape *capsule = static_cast<btCapsuleShape*>( collisionShape );
1728
+ newCollisionShapeDescription.radius = capsule->getRadius();
1729
+ newCollisionShapeDescription.halfHeight = capsule->getHalfHeight();
1730
+ newCollisionShapeDescription.margin = capsule->getMargin();
1731
+ newCollisionShapeDescription.upAxis = capsule->getUpAxis();
1732
+ newCollisionShapeDescription.friction = friction;
1733
+ btRigidBody* body = static_cast< btRigidBody* >( collisionObject );
1734
+ newCollisionShapeDescription.linearVelocity = toVector3(body->getLinearVelocity());
1735
+ newCollisionShapeDescription.angularVelocity = toVector3(body->getAngularVelocity());
1736
+ m_collisionObjectDetails.push_back( newCollisionShapeDescription );
1737
+
1738
+ }
1739
+ else {
1740
+ #ifdef _DEBUG
1741
+ printf("Unsupported collision shape type\n");
1742
+ #endif
1743
+ //btAssert(0 && "Unsupported collision shape type\n");
1744
+ }
1745
+ } else {
1746
+ btAssert(0 && "Unknown soft body");
1747
+ }
1748
+ } // btOpenCLSoftBodySolver::processCollision
1749
+
1750
+
1751
+
1752
+
1753
+
1754
+ btOpenCLAcceleratedSoftBodyInterface* btOpenCLSoftBodySolver::findSoftBodyInterface( const btSoftBody* const softBody )
1755
+ {
1756
+ for( int softBodyIndex = 0; softBodyIndex < m_softBodySet.size(); ++softBodyIndex )
1757
+ {
1758
+ btOpenCLAcceleratedSoftBodyInterface* softBodyInterface = m_softBodySet[softBodyIndex];
1759
+ if( softBodyInterface->getSoftBody() == softBody )
1760
+ return softBodyInterface;
1761
+ }
1762
+ return 0;
1763
+ }
1764
+
1765
+
1766
+ int btOpenCLSoftBodySolver::findSoftBodyIndex( const btSoftBody* const softBody )
1767
+ {
1768
+ for( int softBodyIndex = 0; softBodyIndex < m_softBodySet.size(); ++softBodyIndex )
1769
+ {
1770
+ btOpenCLAcceleratedSoftBodyInterface* softBodyInterface = m_softBodySet[softBodyIndex];
1771
+ if( softBodyInterface->getSoftBody() == softBody )
1772
+ return softBodyIndex;
1773
+ }
1774
+ return 1;
1775
+ }
1776
+
1777
+ bool btOpenCLSoftBodySolver::checkInitialized()
1778
+ {
1779
+ if( !m_shadersInitialized )
1780
+ if( buildShaders() )
1781
+ m_shadersInitialized = true;
1782
+
1783
+ return m_shadersInitialized;
1784
+ }
1785
+
1786
+ bool btOpenCLSoftBodySolver::buildShaders()
1787
+ {
1788
+ if( m_shadersInitialized )
1789
+ return true;
1790
+
1791
+ const char* additionalMacros="";
1792
+
1793
+ // Ensure current kernels are released first
1794
+ releaseKernels();
1795
+
1796
+ m_currentCLFunctions->clearKernelCompilationFailures();
1797
+
1798
+ m_prepareLinksKernel = m_currentCLFunctions->compileCLKernelFromString( PrepareLinksCLString, "PrepareLinksKernel",additionalMacros,"OpenCLC10/PrepareLinks.cl" );
1799
+ m_updatePositionsFromVelocitiesKernel = m_currentCLFunctions->compileCLKernelFromString( UpdatePositionsFromVelocitiesCLString, "UpdatePositionsFromVelocitiesKernel" ,additionalMacros,"OpenCLC10/UpdatePositionsFromVelocities.cl");
1800
+ m_solvePositionsFromLinksKernel = m_currentCLFunctions->compileCLKernelFromString( SolvePositionsCLString, "SolvePositionsFromLinksKernel",additionalMacros,"OpenCLC10/SolvePositions.cl" );
1801
+ m_vSolveLinksKernel = m_currentCLFunctions->compileCLKernelFromString( VSolveLinksCLString, "VSolveLinksKernel" ,additionalMacros,"OpenCLC10/VSolveLinks.cl");
1802
+ m_updateVelocitiesFromPositionsWithVelocitiesKernel = m_currentCLFunctions->compileCLKernelFromString( UpdateNodesCLString, "updateVelocitiesFromPositionsWithVelocitiesKernel" ,additionalMacros,"OpenCLC10/UpdateNodes.cl");
1803
+ m_updateVelocitiesFromPositionsWithoutVelocitiesKernel = m_currentCLFunctions->compileCLKernelFromString( UpdatePositionsCLString, "updateVelocitiesFromPositionsWithoutVelocitiesKernel" ,additionalMacros,"OpenCLC10/UpdatePositions.cl");
1804
+ m_solveCollisionsAndUpdateVelocitiesKernel = m_currentCLFunctions->compileCLKernelFromString( SolveCollisionsAndUpdateVelocitiesCLString, "SolveCollisionsAndUpdateVelocitiesKernel" ,additionalMacros,"OpenCLC10/SolveCollisionsAndUpdateVelocities.cl");
1805
+ m_integrateKernel = m_currentCLFunctions->compileCLKernelFromString( IntegrateCLString, "IntegrateKernel" ,additionalMacros,"OpenCLC10/Integrate.cl");
1806
+ m_applyForcesKernel = m_currentCLFunctions->compileCLKernelFromString( ApplyForcesCLString, "ApplyForcesKernel" ,additionalMacros,"OpenCLC10/ApplyForces.cl");
1807
+ m_updateFixedVertexPositionsKernel = m_currentCLFunctions->compileCLKernelFromString( UpdateFixedVertexPositionsCLString, "UpdateFixedVertexPositions" , additionalMacros, "OpenCLC10/UpdateFixedVertexPositions.cl");
1808
+
1809
+ // TODO: Rename to UpdateSoftBodies
1810
+ m_resetNormalsAndAreasKernel = m_currentCLFunctions->compileCLKernelFromString( UpdateNormalsCLString, "ResetNormalsAndAreasKernel" ,additionalMacros,"OpenCLC10/UpdateNormals.cl");
1811
+ m_normalizeNormalsAndAreasKernel = m_currentCLFunctions->compileCLKernelFromString( UpdateNormalsCLString, "NormalizeNormalsAndAreasKernel" ,additionalMacros,"OpenCLC10/UpdateNormals.cl");
1812
+ m_updateSoftBodiesKernel = m_currentCLFunctions->compileCLKernelFromString( UpdateNormalsCLString, "UpdateSoftBodiesKernel" ,additionalMacros,"OpenCLC10/UpdateNormals.cl");
1813
+
1814
+
1815
+ if( m_currentCLFunctions->getKernelCompilationFailures()==0 )
1816
+ m_shadersInitialized = true;
1817
+
1818
+ return m_shadersInitialized;
1819
+ }
1820
+