void DispatchShaders() { traversalShader.SetFloat("radius", diameter / 2); traversalShader.SetFloat("speed", speed); traversalShader.SetFloat("gravity", gravityMul); traversalShader.SetVector("gravityVec", gravityVec); traversalShader.SetFloat("angularSpeed", angularSpeed); traversalShader.SetFloat("viscosity", viscosity); traversalShader.SetFloat("DeltaTime", simulationTimeStep); if (sphereCollider != null) { traversalShader.SetVector("sphereColliderPos", sphereCollider.transform.position); traversalShader.SetFloat("sphereRadius", sphereCollider.transform.lossyScale.y / 2); } sortShader.Dispatch(sortingKernelHandler, count / sortMergeGroupSize, 1, 1); mergeShader.Dispatch(mergeKernelHandler, count / sortMergeGroupSize, 1, 1); traversalShader.Dispatch(writeNodeDataKernelHandler, count / groupSize, 1, 1); bvhShader.Dispatch(treeConstructionKernelhandler, count / groupSize, 1, 1); AABBShader.Dispatch(boundingSphereKernelHandler, count / groupSize, 1, 1); //Cpu AABB implementation here //boundingInternalNodeBuffer.GetData(nodeData); //boundingLeafNodeBuffer.GetData(leafData); //CreateBoundingBoxes(ref nodeData,ref leafData); //boundingInternalNodeBuffer.SetData(nodeData); traversalShader.Dispatch(traversalKernelKernelHandler, count / mainKernelGroupSize, 1, 1); traversalShader.Dispatch(mainKernelHandler, count / mainKernelGroupSize, 1, 1); }