O'Reilly logo

Multithreading for Visual Effects by James Reinders, Jeff Lait, Manuel Kraemer, Ronald Henderson, George ElKoura, Erwin Coumans, Martin Watt

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 6
Bullet Physics: Simulation with OpenCL
Erwin Coumans
Bullet Physics
6.1 Introduction . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . 138
6.1.1 Rigid Body Dynamics Simulation . . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . 138
6.1.2 Refactoring before the Full Rewrite .. . . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. . . 139
6.2 Rewriting from Scratch Using OpenCL . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. 140
6.2.1 Brief OpenCL Introduction . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . 140
6.2.2 Exploiting the GPU . . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . 142
6.2.3 Dealing with Branchy Code/Thread Divergence . . . .. . . . . . . . . . .. . . . . . . 143
6.2.4 Serializing Data to Contiguous Memory . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . 144
6.2.5 Sharing CPU and GPU Code . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . 144
6.2.6 Precompiled Kernel Caching . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . 145
6.3 GPU Spatial Acceleration Structures . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . 145
6.3.1 Reference All Pairs Overlap Test . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . 146
6.3.2 Uniform Grid . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . 147
6.3.3 Parallel 1-Axis Sort and Sweep . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . 148
6.3.4 Parallel 3-Axis Sweep and Prune . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . 149
6.3.5 Hybrid Approaches . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. 150
6.3.6 Static Local Space AABB Tree . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . 150
6.4 GPU Contact Point Generation . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . 151
6.4.1 Collision Shape Representation . . . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . 151
6.4.2 Convex 3D Height Field Using Cube Maps . . . . . . . . . .. . . . . . . . . . .. . . . . . 152
6.4.3 Separating Axis Test . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . 153
6.4.4 Sutherland Hodgeman Clipping . . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. 153
6.4.5 Minkowski Portal Refinement . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. . 154
6.4.6 Contact Reduction . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . 154
6.5 GPU Constraint Solving . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . 155
6.5.1 Equations of Motion . . . . . .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . 155
6.5.2 Contact and Friction Constraint Setup . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . 155
6.5.3 Parallel Projected Gauss-Seidel Method . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . 156
6.5.4 Batch Creation and Two-Stage Batching . . . .. . . . . . . . . . .. . . . . . . . .. .. . . 157
6.5.5 Non-Contact Constraints .. .. . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. 158
6.5.6 GPU Deterministic Simulation . . . . . . . . . . .. . . . . . . . . . .. . . . . . . . . . .. . . . . . . 159
6.5.7 Conclusion and Future Work . . . . . . . . . .. . . . . . . . . . .. . . . . . . . .. .. . . . . . . . .. 159
137

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required