Imported Upstream version 2.81
[platform/upstream/libbullet.git] / src / BulletMultiThreaded / GpuSoftBodySolvers / OpenCL / OpenCLC10 / Integrate.cl
1 MSTRINGIFY(\r
2 \r
3 // Node indices for each link\r
4 \r
5 \r
6 \r
7 __kernel void\r
8 IntegrateKernel( \r
9         const int numNodes,\r
10         const float solverdt,\r
11         __global float * g_vertexInverseMasses,\r
12         __global float4 * g_vertexPositions,\r
13         __global float4 * g_vertexVelocity,\r
14         __global float4 * g_vertexPreviousPositions,\r
15         __global float4 * g_vertexForceAccumulator GUID_ARG)\r
16 {\r
17         int nodeID = get_global_id(0);\r
18         if( nodeID < numNodes )\r
19         {       \r
20                 float4 position   = g_vertexPositions[nodeID];\r
21                 float4 velocity   = g_vertexVelocity[nodeID];\r
22                 float4 force      = g_vertexForceAccumulator[nodeID];\r
23                 float inverseMass = g_vertexInverseMasses[nodeID];\r
24                 \r
25                 g_vertexPreviousPositions[nodeID] = position;\r
26                 velocity += force * inverseMass * solverdt;\r
27                 position += velocity * solverdt;\r
28                 \r
29                 g_vertexForceAccumulator[nodeID] = (float4)(0.f, 0.f, 0.f, 0.0f);\r
30                 g_vertexPositions[nodeID]        = position;\r
31                 g_vertexVelocity[nodeID]         = velocity;    \r
32         }\r
33 }\r
34 \r
35 );