-
-
Notifications
You must be signed in to change notification settings - Fork 21.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bullet physics engine implementation #10013
Conversation
Honestly, if we can replace the current physics engine by Bullet, I woukd
be happier as this is a lot less work to maintain. Last time I checked
Bullet, this was not really possible due to a lot of missing functions, but
it was a long time ago.
What is missing for a full replacement?
…On Aug 1, 2017 12:23 PM, "Andrea Catania" ***@***.***> wrote:
It's long time that we talk about this. and finally today I'm submitting
the PR.
Note
Before present my job I want highlight some things.
This implementation is not intended to completely overwrite the current
godot implementation, infact by going to the the project settings is
possible choose which Physics engine to use so the developer has 100%
freedom about which engine to use (the default is the current Godot physics
engine).
[image: Godot - physics engine select]
<https://camo.githubusercontent.com/db2d2fbae088bc50fc35401cb6ff38e20db816a1/687474703a2f2f7777772e616e64726561636174616e69612e636f6d2f7265732f476f646f7450726f6a65637453657474696e67732e706e67>
The other thing is that by using bullet physics engine we are not changing
nothing about the old usage of Godot. All the old known ways used to handle
the physics in the games remains untouched at all.
I've made some videos where I compare the two physics engine and the only
thing I did to swap the engines was select GodotDefault or Bullet in the
settings.
There are two things to implement vehicle and kinematic character, I'll
implement these if this PR will be accepted. The SCsub file must be
improved to allow more customization of Bullet.
Presentation
Thanks to the good concept of Godot implementation I was able to implement
Bullet in a natural way.
In this video https://www.youtube.com/watch?v=NYLQSaMXHmg I show the
areas and the trimeshes that works perfectly, I want to point out that the
areas can be used as trigger or space modificator, like is done by default
Godot. In this video you can see all the balls that falls down under a
limit enter inside a trigger area that destroy it.
Another thing is that as you can see Bullet manage better the trimesh
collisions and the balls movement.
In this video https://www.youtube.com/watch?v=4X4GRbmfSnc I want to show
you the improvements that Bullet port and for this reason I show three
tests.
The first test show the joints implementation, So I've made a chain with
dynamics number of elements. Using godot physics engine we are limited to
88 elements, but with Bullet we can go further to 300 with 30FPS.
The other test I test a slider, hinge, 6DOF + motor joints and with Godot
physics it doesn't work at all.
The last test I made is usefull to demostrate that Bullet support
perfectly the method of godot to create multi shaped bodies
Conclusion
As you can see by implementing Bullet physics engine we have the access to
a very stable physics engine, that is a lot know and well documented,
without losing any performance.
We also have the possibility to focus more on the implementation of new
featurs like Cloth / soft bodies, or improve performance of trimesh by
using vertex reduction utility
<http://www.bulletphysics.org/mediawiki-1.5.8/index.php/BtShapeHull_vertex_reduction_utility>.
And improve the vehicle stability. I've also implemented the heightmap
shape so when we'll implement the possibility to create the height field
inside the engine the collision shape is ready to work.
I think this is a good feature and improvement that speed up the
implementation of the engine and port even more interest about the third
version of this engine, that with the new rendering engine and withy a
stable physics engine make this game engine even more competitive.
I don't want provide it as a GDNative because I want implement the things
that I've pointed above (clothing) that are impossible to support using
GDNative since I need to make some changes to engine code.
------------------------------
You can view, comment on, or merge this pull request online at:
#10013
Commit Summary
- Bullet physics engine implementation
- Improved area scratching process, Added old SCsub with library
File Changes
- *M* core/project_settings.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-0> (4)
- *A* modules/Bullet/AreaBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-1> (264)
- *A* modules/Bullet/AreaBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-2> (135)
- *A* modules/Bullet/BodyBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-3> (804)
- *A* modules/Bullet/BodyBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-4> (221)
- *A* modules/Bullet/BulletPhysicsServer.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-5> (1128)
- *A* modules/Bullet/BulletPhysicsServer.h
<https://github.com/godotengine/godot/pull/10013/files#diff-6> (285)
- *A* modules/Bullet/BulletTypesConverter.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-7> (63)
- *A* modules/Bullet/BulletTypesConverter.h
<https://github.com/godotengine/godot/pull/10013/files#diff-8> (24)
- *A* modules/Bullet/BulletUtilities.h
<https://github.com/godotengine/godot/pull/10013/files#diff-9> (8)
- *A* modules/Bullet/CollisionObjectBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-10> (206)
- *A* modules/Bullet/CollisionObjectBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-11> (112)
- *A* modules/Bullet/ConeTwistJointBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-12> (82)
- *A* modules/Bullet/ConeTwistJointBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-13> (24)
- *A* modules/Bullet/ConstraintBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-14> (21)
- *A* modules/Bullet/ConstraintBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-15> (31)
- *A* modules/Bullet/Generic6DOFJointBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-16> (214)
- *A* modules/Bullet/Generic6DOFJointBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-17> (32)
- *A* modules/Bullet/GodotCollisionDispatcher.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-18> (28)
- *A* modules/Bullet/GodotCollisionDispatcher.h
<https://github.com/godotengine/godot/pull/10013/files#diff-19> (13)
- *A* modules/Bullet/GodotMotionState.h
<https://github.com/godotengine/godot/pull/10013/files#diff-20> (69)
- *A* modules/Bullet/HingeJointBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-21> (134)
- *A* modules/Bullet/HingeJointBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-22> (21)
- *A* modules/Bullet/JointBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-23> (8)
- *A* modules/Bullet/JointBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-24> (16)
- *A* modules/Bullet/PinJointBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-25> (83)
- *A* modules/Bullet/PinJointBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-26> (24)
- *A* modules/Bullet/RIDBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-27> (17)
- *A* modules/Bullet/SCsub
<https://github.com/godotengine/godot/pull/10013/files#diff-28> (191)
- *A* modules/Bullet/SCsub_with_lib
<https://github.com/godotengine/godot/pull/10013/files#diff-29> (33)
- *A* modules/Bullet/ShapeBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-30> (304)
- *A* modules/Bullet/ShapeBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-31> (152)
- *A* modules/Bullet/ShapeOwnerBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-32> (16)
- *A* modules/Bullet/SliderJointBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-33> (354)
- *A* modules/Bullet/SliderJointBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-34> (85)
- *A* modules/Bullet/SpaceBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-35> (520)
- *A* modules/Bullet/SpaceBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-36> (125)
- *A* modules/Bullet/StepperBullet.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-37> (16)
- *A* modules/Bullet/StepperBullet.h
<https://github.com/godotengine/godot/pull/10013/files#diff-38> (25)
- *A* modules/Bullet/TODO-list.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-39> (7)
- *A* modules/Bullet/config.py
<https://github.com/godotengine/godot/pull/10013/files#diff-40> (6)
- *A* modules/Bullet/register_types.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-41> (12)
- *A* modules/Bullet/register_types.h
<https://github.com/godotengine/godot/pull/10013/files#diff-42> (2)
- *M* platform/windows/os_windows.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-43> (15)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3BroadphaseCallback.h
<https://github.com/godotengine/godot/pull/10013/files#diff-44> (40)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3DynamicBvh.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-45> (1295)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3DynamicBvh.h
<https://github.com/godotengine/godot/pull/10013/files#diff-46> (1269)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3DynamicBvhBroadphase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-47> (804)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3DynamicBvhBroadphase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-48> (206)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3OverlappingPair.h
<https://github.com/godotengine/godot/pull/10013/files#diff-49> (72)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3OverlappingPairCache.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-50> (638)
- *A* thirdparty/Bullet/src/Bullet3Collision/BroadPhaseCollision/
b3OverlappingPairCache.h
<https://github.com/godotengine/godot/pull/10013/files#diff-51> (474)
- *A* thirdparty/Bullet/src/Bullet3Collision/
BroadPhaseCollision/shared/b3Aabb.h
<https://github.com/godotengine/godot/pull/10013/files#diff-52> (59)
- *A* thirdparty/Bullet/src/Bullet3Collision/CMakeLists.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-53> (93)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/b3Config.h
<https://github.com/godotengine/godot/pull/10013/files#diff-54> (41)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3Contact4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-55> (46)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3ConvexUtility.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-56> (520)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3ConvexUtility.h
<https://github.com/godotengine/godot/pull/10013/files#diff-57> (62)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3CpuNarrowPhase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-58> (323)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3CpuNarrowPhase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-59> (105)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3RaycastInfo.h
<https://github.com/godotengine/godot/pull/10013/files#diff-60> (24)
- *A* thirdparty/Bullet/src/Bullet3Collision/NarrowPhaseCollision/
b3RigidBodyCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-61> (30)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3BvhSubtreeInfoData.h
<https://github.com/godotengine/godot/pull/10013/files#diff-62> (20)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3BvhTraversal.h
<https://github.com/godotengine/godot/pull/10013/files#diff-63> (126)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3ClipFaces.h
<https://github.com/godotengine/godot/pull/10013/files#diff-64> (188)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3Collidable.h
<https://github.com/godotengine/godot/pull/10013/files#diff-65> (76)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3Contact4Data.h
<https://github.com/godotengine/godot/pull/10013/files#diff-66> (40)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3ContactConvexConvexSAT.h
<https://github.com/godotengine/godot/pull/10013/files#diff-67> (520)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3ContactSphereSphere.h
<https://github.com/godotengine/godot/pull/10013/files#diff-68> (162)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3ConvexPolyhedronData.h
<https://github.com/godotengine/godot/pull/10013/files#diff-69> (40)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3FindConcaveSatAxis.h
<https://github.com/godotengine/godot/pull/10013/files#diff-70> (832)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3FindSeparatingAxis.h
<https://github.com/godotengine/godot/pull/10013/files#diff-71> (206)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3MprPenetration.h
<https://github.com/godotengine/godot/pull/10013/files#diff-72> (920)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3NewContactReduction.h
<https://github.com/godotengine/godot/pull/10013/files#diff-73> (196)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3QuantizedBvhNodeData.h
<https://github.com/godotengine/godot/pull/10013/files#diff-74> (90)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3ReduceContacts.h
<https://github.com/godotengine/godot/pull/10013/files#diff-75> (97)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3RigidBodyData.h
<https://github.com/godotengine/godot/pull/10013/files#diff-76> (34)
- *A* thirdparty/Bullet/src/Bullet3Collision/
NarrowPhaseCollision/shared/b3UpdateAabbs.h
<https://github.com/godotengine/godot/pull/10013/files#diff-77> (40)
- *A* thirdparty/Bullet/src/Bullet3Collision/premake4.lua
<https://github.com/godotengine/godot/pull/10013/files#diff-78> (13)
- *A* thirdparty/Bullet/src/Bullet3Common/CMakeLists.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-79> (63)
- *A* thirdparty/Bullet/src/Bullet3Common/b3AlignedAllocator.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-80> (181)
- *A* thirdparty/Bullet/src/Bullet3Common/b3AlignedAllocator.h
<https://github.com/godotengine/godot/pull/10013/files#diff-81> (107)
- *A* thirdparty/Bullet/src/Bullet3Common/b3AlignedObjectArray.h
<https://github.com/godotengine/godot/pull/10013/files#diff-82> (533)
- *A* thirdparty/Bullet/src/Bullet3Common/b3CommandLineArgs.h
<https://github.com/godotengine/godot/pull/10013/files#diff-83> (101)
- *A* thirdparty/Bullet/src/Bullet3Common/b3FileUtils.h
<https://github.com/godotengine/godot/pull/10013/files#diff-84> (138)
- *A* thirdparty/Bullet/src/Bullet3Common/b3HashMap.h
<https://github.com/godotengine/godot/pull/10013/files#diff-85> (466)
- *A* thirdparty/Bullet/src/Bullet3Common/b3Logging.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-86> (160)
- *A* thirdparty/Bullet/src/Bullet3Common/b3Logging.h
<https://github.com/godotengine/godot/pull/10013/files#diff-87> (77)
- *A* thirdparty/Bullet/src/Bullet3Common/b3Matrix3x3.h
<https://github.com/godotengine/godot/pull/10013/files#diff-88> (1362)
- *A* thirdparty/Bullet/src/Bullet3Common/b3MinMax.h
<https://github.com/godotengine/godot/pull/10013/files#diff-89> (71)
- *A* thirdparty/Bullet/src/Bullet3Common/b3PoolAllocator.h
<https://github.com/godotengine/godot/pull/10013/files#diff-90> (121)
- *A* thirdparty/Bullet/src/Bullet3Common/b3QuadWord.h
<https://github.com/godotengine/godot/pull/10013/files#diff-91> (245)
- *A* thirdparty/Bullet/src/Bullet3Common/b3Quaternion.h
<https://github.com/godotengine/godot/pull/10013/files#diff-92> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3Random.h
<https://github.com/godotengine/godot/pull/10013/files#diff-93> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3ResizablePool.h
<https://github.com/godotengine/godot/pull/10013/files#diff-94> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3Scalar.h
<https://github.com/godotengine/godot/pull/10013/files#diff-95> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3StackAlloc.h
<https://github.com/godotengine/godot/pull/10013/files#diff-96> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3Transform.h
<https://github.com/godotengine/godot/pull/10013/files#diff-97> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3TransformUtil.h
<https://github.com/godotengine/godot/pull/10013/files#diff-98> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3Vector3.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-99> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/b3Vector3.h
<https://github.com/godotengine/godot/pull/10013/files#diff-100> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/premake4.lua
<https://github.com/godotengine/godot/pull/10013/files#diff-101> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/shared/b3Float4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-102> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/shared/b3Int2.h
<https://github.com/godotengine/godot/pull/10013/files#diff-103> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/shared/b3Int4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-104> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/shared/b3Mat3x3.h
<https://github.com/godotengine/godot/pull/10013/files#diff-105> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/shared/
b3PlatformDefinitions.h
<https://github.com/godotengine/godot/pull/10013/files#diff-106> (0)
- *M* thirdparty/Bullet/src/Bullet3Common/shared/b3Quat.h
<https://github.com/godotengine/godot/pull/10013/files#diff-107> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/CMakeLists.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-108> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3ContactSolverInfo.h
<https://github.com/godotengine/godot/pull/10013/files#diff-109> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3FixedConstraint.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-110> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3FixedConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-111> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3Generic6DofConstraint.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-112> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3Generic6DofConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-113> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3JacobianEntry.h
<https://github.com/godotengine/godot/pull/10013/files#diff-114> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3PgsJacobiSolver.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-115> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3PgsJacobiSolver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-116> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3Point2PointConstraint.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-117> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3Point2PointConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-118> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/
ConstraintSolver/b3SolverBody.h
<https://github.com/godotengine/godot/pull/10013/files#diff-119> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3SolverConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-120> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3TypedConstraint.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-121> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/ConstraintSolver/
b3TypedConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-122> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-123> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/b3CpuRigidBodyPipeline.h
<https://github.com/godotengine/godot/pull/10013/files#diff-124> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/premake4.lua
<https://github.com/godotengine/godot/pull/10013/files#diff-125> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/shared/
b3ContactConstraint4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-126> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/shared/
b3ConvertConstraint4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-127> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/shared/b3Inertia.h
<https://github.com/godotengine/godot/pull/10013/files#diff-128> (0)
- *M* thirdparty/Bullet/src/Bullet3Dynamics/shared/
b3IntegrateTransforms.h
<https://github.com/godotengine/godot/pull/10013/files#diff-129> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/CMakeLists.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-130> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/b3AabbUtil.h
<https://github.com/godotengine/godot/pull/10013/files#diff-131> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/b3ConvexHullComputer.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-132> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/b3ConvexHullComputer.h
<https://github.com/godotengine/godot/pull/10013/files#diff-133> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/b3GeometryUtil.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-134> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/b3GeometryUtil.h
<https://github.com/godotengine/godot/pull/10013/files#diff-135> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/b3GrahamScan2dConvexHull.h
<https://github.com/godotengine/godot/pull/10013/files#diff-136> (0)
- *M* thirdparty/Bullet/src/Bullet3Geometry/premake4.lua
<https://github.com/godotengine/godot/pull/10013/files#diff-137> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuBroadphaseInterface.h
<https://github.com/godotengine/godot/pull/10013/files#diff-138> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuGridBroadphase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-139> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuGridBroadphase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-140> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuParallelLinearBvh.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-141> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuParallelLinearBvh.h
<https://github.com/godotengine/godot/pull/10013/files#diff-142> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuParallelLinearBvhBroadphase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-143> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuParallelLinearBvhBroadphase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-144> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuSapBroadphase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-145> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/
b3GpuSapBroadphase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-146> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/
BroadphaseCollision/b3SapAabb.h
<https://github.com/godotengine/godot/pull/10013/files#diff-147> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/
gridBroadphase.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-148> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/
gridBroadphaseKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-149> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/
parallelLinearBvh.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-150> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/
parallelLinearBvhKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-151> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/
sap.cl <https://github.com/godotengine/godot/pull/10013/files#diff-152>
(0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/BroadphaseCollision/kernels/
sapKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-153> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/CMakeLists.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-154> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Initialize/b3OpenCLInclude.h
<https://github.com/godotengine/godot/pull/10013/files#diff-155> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-156> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Initialize/b3OpenCLUtils.h
<https://github.com/godotengine/godot/pull/10013/files#diff-157> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3BvhInfo.h
<https://github.com/godotengine/godot/pull/10013/files#diff-158> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3ContactCache.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-159> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3ContactCache.h
<https://github.com/godotengine/godot/pull/10013/files#diff-160> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3ConvexHullContact.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-161> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3ConvexHullContact.h
<https://github.com/godotengine/godot/pull/10013/files#diff-162> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3ConvexPolyhedronCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-163> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/
NarrowphaseCollision/b3GjkEpa.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-164> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/
NarrowphaseCollision/b3GjkEpa.h
<https://github.com/godotengine/godot/pull/10013/files#diff-165> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3GjkPairDetector.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-166> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3GjkPairDetector.h
<https://github.com/godotengine/godot/pull/10013/files#diff-167> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3OptimizedBvh.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-168> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3OptimizedBvh.h
<https://github.com/godotengine/godot/pull/10013/files#diff-169> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3QuantizedBvh.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-170> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3QuantizedBvh.h
<https://github.com/godotengine/godot/pull/10013/files#diff-171> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3StridingMeshInterface.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-172> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3StridingMeshInterface.h
<https://github.com/godotengine/godot/pull/10013/files#diff-173> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3SupportMappings.h
<https://github.com/godotengine/godot/pull/10013/files#diff-174> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3TriangleCallback.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-175> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3TriangleCallback.h
<https://github.com/godotengine/godot/pull/10013/files#diff-176> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3TriangleIndexVertexArray.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-177> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3TriangleIndexVertexArray.h
<https://github.com/godotengine/godot/pull/10013/files#diff-178> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3VectorFloat4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-179> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3VoronoiSimplexSolver.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-180> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/
b3VoronoiSimplexSolver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-181> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
bvhTraversal.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-182> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
bvhTraversal.h
<https://github.com/godotengine/godot/pull/10013/files#diff-183> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
mpr.cl <https://github.com/godotengine/godot/pull/10013/files#diff-184>
(0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
mprKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-185> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
primitiveContacts.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-186> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
primitiveContacts.h
<https://github.com/godotengine/godot/pull/10013/files#diff-187> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
sat.cl <https://github.com/godotengine/godot/pull/10013/files#diff-188>
(0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
satClipHullContacts.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-189> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
satClipHullContacts.h
<https://github.com/godotengine/godot/pull/10013/files#diff-190> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
satConcave.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-191> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
satConcaveKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-192> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/NarrowphaseCollision/kernels/
satKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-193> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3BoundSearchCL.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-194> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3BoundSearchCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-195> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3BufferInfoCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-196> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.
cpp <https://github.com/godotengine/godot/pull/10013/files#diff-197>
(0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/b3FillCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-198> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3LauncherCL.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-199> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3LauncherCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-200> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3OpenCLArray.h
<https://github.com/godotengine/godot/pull/10013/files#diff-201> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3PrefixScanCL.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-202> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3PrefixScanCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-203> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3PrefixScanFloat4CL.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-204> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3PrefixScanFloat4CL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-205> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3RadixSort32CL.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-206> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/
b3RadixSort32CL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-207> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
BoundSearchKernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-208> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
BoundSearchKernelsCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-209> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
CopyKernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-210> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
CopyKernelsCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-211> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
FillKernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-212> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
FillKernelsCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-213> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
PrefixScanFloat4Kernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-214> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
PrefixScanKernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-215> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
PrefixScanKernelsCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-216> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
PrefixScanKernelsFloat4CL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-217> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
RadixSort32Kernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-218> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/ParallelPrimitives/kernels/
RadixSort32KernelsCL.h
<https://github.com/godotengine/godot/pull/10013/files#diff-219> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-220> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Raycast/b3GpuRaycast.h
<https://github.com/godotengine/godot/pull/10013/files#diff-221> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Raycast/kernels/
rayCastKernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-222> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/Raycast/kernels/
rayCastKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-223> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/b3GpuConstraint4.h
<https://github.com/godotengine/godot/pull/10013/files#diff-224> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuGenericConstraint.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-225> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuGenericConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-226> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuJacobiContactSolver.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-227> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuJacobiContactSolver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-228> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuNarrowPhase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-229> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/b3GpuNarrowPhase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-230> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuNarrowPhaseInternalData.h
<https://github.com/godotengine/godot/pull/10013/files#diff-231> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuPgsConstraintSolver.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-232> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuPgsConstraintSolver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-233> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuPgsContactSolver.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-234> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuPgsContactSolver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-235> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuRigidBodyPipeline.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-236> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuRigidBodyPipeline.h
<https://github.com/godotengine/godot/pull/10013/files#diff-237> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuRigidBodyPipelineInternalData.h
<https://github.com/godotengine/godot/pull/10013/files#diff-238> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/b3GpuSolverBody.h
<https://github.com/godotengine/godot/pull/10013/files#diff-239> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
b3GpuSolverConstraint.h
<https://github.com/godotengine/godot/pull/10013/files#diff-240> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/b3Solver.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-241> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/b3Solver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-242> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/batchingKernels.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-243> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/batchingKernels.h
<https://github.com/godotengine/godot/pull/10013/files#diff-244> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/batchingKernelsNew.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-245> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/batchingKernelsNew.h
<https://github.com/godotengine/godot/pull/10013/files#diff-246> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/integrateKernel.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-247> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/integrateKernel.h
<https://github.com/godotengine/godot/pull/10013/files#diff-248> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/jointSolver.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-249> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/jointSolver.h
<https://github.com/godotengine/godot/pull/10013/files#diff-250> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solveContact.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-251> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solveContact.h
<https://github.com/godotengine/godot/pull/10013/files#diff-252> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solveFriction.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-253> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solveFriction.h
<https://github.com/godotengine/godot/pull/10013/files#diff-254> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solverSetup.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-255> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solverSetup.h
<https://github.com/godotengine/godot/pull/10013/files#diff-256> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solverSetup2.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-257> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solverSetup2.h
<https://github.com/godotengine/godot/pull/10013/files#diff-258> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solverUtils.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-259> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/solverUtils.h
<https://github.com/godotengine/godot/pull/10013/files#diff-260> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/updateAabbsKernel.cl
<https://github.com/godotengine/godot/pull/10013/files#diff-261> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/RigidBody/
kernels/updateAabbsKernel.h
<https://github.com/godotengine/godot/pull/10013/files#diff-262> (0)
- *M* thirdparty/Bullet/src/Bullet3OpenCL/premake4.lua
<https://github.com/godotengine/godot/pull/10013/files#diff-263> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/CMakeLists.txt
<https://github.com/godotengine/godot/pull/10013/files#diff-264> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/
autogenerated/bullet2.h
<https://github.com/godotengine/godot/pull/10013/files#diff-265> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/
b3BulletFile.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-266> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/
b3BulletFile.h
<https://github.com/godotengine/godot/pull/10013/files#diff-267> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/b3Chunk.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-268> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/b3Chunk.h
<https://github.com/godotengine/godot/pull/10013/files#diff-269> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/b3Common.h
<https://github.com/godotengine/godot/pull/10013/files#diff-270> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/b3DNA.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-271> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
<https://github.com/godotengine/godot/pull/10013/files#diff-272> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/b3Defines.h
<https://github.com/godotengine/godot/pull/10013/files#diff-273> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/b3File.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-274> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/b3File.h
<https://github.com/godotengine/godot/pull/10013/files#diff-275> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/
b3Serializer.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-276> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/Bullet2FileLoader/
b3Serializer.h
<https://github.com/godotengine/godot/pull/10013/files#diff-277> (0)
- *M* thirdparty/Bullet/src/Bullet3Serialize/
Bullet2FileLoader/premake4.lua
<https://github.com/godotengine/godot/pull/10013/files#diff-278> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btAxisSweep3.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-279> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btAxisSweep3.h
<https://github.com/godotengine/godot/pull/10013/files#diff-280> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btAxisSweep3Internal.h
<https://github.com/godotengine/godot/pull/10013/files#diff-281> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btBroadphaseInterface.h
<https://github.com/godotengine/godot/pull/10013/files#diff-282> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btBroadphaseProxy.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-283> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btBroadphaseProxy.h
<https://github.com/godotengine/godot/pull/10013/files#diff-284> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btCollisionAlgorithm.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-285> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btCollisionAlgorithm.h
<https://github.com/godotengine/godot/pull/10013/files#diff-286> (0)
- *M* thirdparty/Bullet/src/BulletCollision/
BroadphaseCollision/btDbvt.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-287> (0)
- *M* thirdparty/Bullet/src/BulletCollision/
BroadphaseCollision/btDbvt.h
<https://github.com/godotengine/godot/pull/10013/files#diff-288> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btDbvtBroadphase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-289> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btDbvtBroadphase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-290> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btDispatcher.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-291> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btDispatcher.h
<https://github.com/godotengine/godot/pull/10013/files#diff-292> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btOverlappingPairCache.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-293> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btOverlappingPairCache.h
<https://github.com/godotengine/godot/pull/10013/files#diff-294> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btOverlappingPairCallback.h
<https://github.com/godotengine/godot/pull/10013/files#diff-295> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btQuantizedBvh.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-296> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btQuantizedBvh.h
<https://github.com/godotengine/godot/pull/10013/files#diff-297> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btSimpleBroadphase.cpp
<https://github.com/godotengine/godot/pull/10013/files#diff-298> (0)
- *M* thirdparty/Bullet/src/BulletCollision/BroadphaseCollision/
btSimpleBroadphase.h
<https://github.com/godotengine/godot/pull/10013/files#diff-299> (0)
Patch Links:
- https://github.com/godotengine/godot/pull/10013.patch
- https://github.com/godotengine/godot/pull/10013.diff
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#10013>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/AF-Z20fuNDluhm_5SFyOA8RY_E7C7KUHks5sT0L-gaJpZM4Op5Ej>
.
|
We just need to implement vehicle and kinematic character. but all other stuff are working. I'm very happy to hear this. |
Is |
@kubecz3k As I've written before, the character is not yet supported, but It'll be supported soon together with vehicle |
Well you was writing about 'kinematic character', thought that meant kinematic mode, not kinematic and character :) |
A few non-problems I noticed:
I don't know much about physics so I can't really make a proper code review, this is just surface level stuff I noticed. But really impressive, nice work! |
@karroffel Nice hint, the capitalization could be a problem and I can update it. This is not a problem. |
My main issues with implementing Bullet as physics engine, despite all the advantages, so (if you have any fedback on this it's welcome). Discussing how they can be solved will be interesting:
|
Some more cocerns: -Godot has a RayCast shape, which basically just pushes objects apart. This very useful for dynamic character controllers, not sure how it's done in Bullet |
And even more concerns:
|
Oh wow this is huge, and I hope it works out. I adore godot but if bullet can help stabilise the physics then I'm all for it. |
I would use this pr because joints actually work, where I've never had luck with joints in godot's current physics engine. |
@LeonardMeagher2 So far @AndreaCatania is doing a great work, we are still ironing out all the inconsistencies between the APIs to make adapting it as smooth as possible. |
HeightMap shape implemented? Ooooh that means the heightmap module I'm making in 3.0 can get proper physics :D I wonder if Bullet can handle huge sizes / dynamic stitching with these |
Bullet 2.85 added htc vive and occulus rift support, so the guys that worked/are working on Godot ARVR might be able to make use of bullet to further that aspect of the engine. Bullet could also allow for things that need a lot of speed like destructible and deformable environments. If this wrapper can be added and allow for interchangeability between Godot's physics engine and Bullet without the need to rewrite existing scripts, this would be a huge milestone and would be worth throwing time towards in the future in a newer version like 3.1 or what ever version comes after that. For now the concerns Reduz brought up should be addressed. |
This is advancing faster than I was expecting :D Once this is done, a post about the experience of implementing an existing physics engine on Godot may be interesting for game developers. |
It would be more than just interesting!
And I wonder if there's more discussion going on in IRC? I'm aching to know about the responses to juan's concerns.
…________________________________
From: eon-s <notifications@github.com>
Sent: Friday, August 4, 2017 2:58 AM
To: godotengine/godot
Cc: Mohamad Al Kotob; Comment
Subject: Re: [godotengine/godot] Bullet physics engine implementation (#10013)
This is advancing faster than I was expecting :D
Once this is done, a post about the experience of implementing an existing physics engine on Godot may be interesting for game developers.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub<#10013 (comment)>, or mute the thread<https://github.com/notifications/unsubscribe-auth/APUNbbJd6Y-DpPMsr_JxI7iWWgv8dGMQks5sUl6pgaJpZM4Op5Ej>.
|
Will this also work in 2D ? Is it even possible to use Bullet in 2D ? |
Personally I wouldn't expect Bullet to be used for the 2D engine, it would sound like the same mistake Unity did a few years ago^^" But it could be usable if the user really wants to, not forged into the design of the engine. |
no.. and as far as I know i don't think box2D or chipmunk have everything
required for what we're doing
…On Sat, Aug 5, 2017 at 12:22 PM, Gilles Roudiere ***@***.***> wrote:
Will this also work in 2D ? Is it even possible to use Bullet in 2D ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#10013 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AF-Z2wDGSAiBJp6SAcfbB3HXO9nJ-jhOks5sVIi1gaJpZM4Op5Ej>
.
|
|
Thanks to the help of Juan I have implemented the kinematic character. Soon I'll reply to all doubt that Juan raised up, and I'll commit all changes. I let you know! |
Good luck @AndreaCatania |
Are Bullet vehicle physics done? When working on the roll influence patch, I referred to the Bullet documentation since the vehicle physics in Godot are very very close... And hopefully having the Bullet option would let me work around the issues I'm having in 3.0... |
I've do some changes to fix some inconsistencies with current, pointed by @karroffel and @reduz. I've updated the code to agree to Godot writing policy. Reduz concerns
Yes this can be exposed in the shape module, it's the best place since this is something related to shape
Yes we can make it configurable, it's not a problem. To do it I need to insert in the function that start the engine some lines of codes that read the engine settings
Like Godot, The Bullet engine use Layer and Mask to manage the collisions, the only difference is that in order to generate a collision both sides must collide. For example a ball that collides with a wall and not with other balls BULLET:Ball layer = 1000 mask 0100 IN GODOT:We can just have collision in one side Ball layer = 1000 mask 0100 Another thing is that Godot has collision exceptions, These are managed, nothing in particular to say about.
Thanks to the help of reduz I've implemented these function, so the kinematic character is now working
Implemented
I've managed this using the function setAngularFactor
This is not supported by current godot 3.0, so I've skipped it for now. However I've checked how to accomplish it and I done a test. It can be done by generating and managing a Manifold when an hit occurs.
I've checked Bullet's code, and as done by Godot, it uses only Broad Phase to handle that. |
@Zireael07 Yes I'll implement the vehicle as next step |
This will have to be well documented and defaults should be thought out. Physics in games is used much differently than in VFX where Bullet shines, we do hell a lot raycasts and not much heavy physics simulations. ;) Of course it varies from game to game, but looking at the market. I don't see games that use complicated simulations but many that need to use a lot of raycasting).
I think main concern here was not, where place it, but "how user friendly it is". Careful design and good documentation would be appreciated a lot. :) |
Closing, we don't want this feature in Godot. ... Ok just kidding, this PR is awesome :) But @AndreaCatania is going to do a new PR with the same code rebased to something with a cleaner git history - we close this PR to keep its work-in-progress commit history for future reference if need be (especially the lengthy discussions). |
@akien-mga you nearly gave me a heart attack with the closing thing :P |
@akien-mga You... |
This comment was marked as off-topic.
This comment was marked as off-topic.
Congratz @AndreaCatania ! Good job :3 |
It's long time that we talk about this. and finally today I'm submitting the PR.
Note
Before present my job I want highlight some things.
This implementation is not intended to completely overwrite the current godot implementation, infact by going to the the project settings is possible choose which Physics engine to use so the developer has 100% freedom about which engine to use (the default is the current Godot physics engine).
The other thing is that by using bullet physics engine we are not changing nothing about the old usage of Godot. All the old known ways used to handle the physics in the games remains untouched at all.
I've made some videos where I compare the two physics engine and the only thing I did to swap the engines was select GodotDefault or Bullet in the settings.
There are two things to implement vehicle and kinematic character, I'll implement these if this PR will be accepted. The SCsub file must be improved to allow more customization of Bullet.
Presentation
Thanks to the good concept of Godot implementation I was able to implement Bullet in a natural way.
In this video https://www.youtube.com/watch?v=NYLQSaMXHmg I show the areas and the trimeshes that works perfectly, I want to point out that the areas can be used as trigger or space modificator, like is done by default Godot. In this video you can see all the balls that falls down under a limit enter inside a trigger area that destroy it.
Another thing is that as you can see Bullet manage better the trimesh collisions and the balls movement.
In this video https://www.youtube.com/watch?v=4X4GRbmfSnc I want to show you the improvements that Bullet port and for this reason I show three tests.
The first test show the joints implementation, So I've made a chain with dynamics number of elements. Using godot physics engine we are limited to 88 elements, but with Bullet we can go further to 300 with 30FPS.
The other test I test a slider, hinge, 6DOF + motor joints and with Godot physics it doesn't work at all.
The last test I made is usefull to demostrate that Bullet support perfectly the method of godot to create multi shaped bodies
Conclusion
As you can see by implementing Bullet physics engine we have the access to a very stable physics engine, that is a lot know and well documented, without losing any performance.
We also have the possibility to focus more on the implementation of new featurs like Cloth / soft bodies, or improve performance of trimesh by using vertex reduction utility. And improve the vehicle stability. I've also implemented the heightmap shape so when we'll implement the possibility to create the height field inside the engine the collision shape is ready to work.
I think this is a good feature and improvement that speed up the implementation of the engine and port even more interest about the third version of this engine, that with the new rendering engine and withy a stable physics engine make this game engine even more competitive.
I don't want provide it as a GDNative because I want implement the things that I've pointed above (clothing) that are impossible to support using GDNative since I need to make some changes to engine code.