| Input | SSBO Pos, Vel, Spring |
| output | SSBO Force |
| 1 | BEGINID = gl_GlobalInvocationlD.xNode1 = Spring [ID] index1Node2 = Spring[ID].index2Dstlndex1 = Node2 * Maxlnput1 + Node1Dstlndex2 = Node1 * Maxlnput1 + Node2 |
| 2 | len = sqrt(PDir.x^2 + PDir.y^2 + PDir.z^2) |
| 3 | Stiffness = Ks * (len - RestLength)Damping = Dot(VDir, Pdir) / len * Kd |
| 4 | SpringForce = Stiffness + DampingSpringForce *= PDir / len |
| 5 | Force[DstIndex1] = SpringForce[DstIndex2] = -SpringForceEND |