3 // Node indices for each link
\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
17 int nodeID = get_global_id(0);
\r
18 if( nodeID < numNodes )
\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
25 g_vertexPreviousPositions[nodeID] = position;
\r
26 velocity += force * inverseMass * solverdt;
\r
27 position += velocity * solverdt;
\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