public RotationService(ComputeShader c, VelocityService v, LifeService l, float radius, Vector2 angularSpeedRange) { Count = v.V0.count; _compute = c; _velocities = v; _lifes = l; _kernelVelocityBasedRotate = c.FindKernel(KERNEL_VELOCITY_BASED_ROTATE); _data = new Vector4[Count]; _rotations = new ComputeBuffer(Count, Marshal.SizeOf(typeof(Vector4))); for (var i = 0; i < Count; i++) { _data[i] = QuaternionExtension.IDENTITY; } Upload(); ShaderUtil.CalcWorkSize(Count, out SimSizeX, out SimSizeY, out SimSizeZ); _angularSpeedData = new float[ShaderConst.WARP_SIZE]; _angularSpeed = new ComputeBuffer(_angularSpeedData.Length, Marshal.SizeOf(typeof(float))); UpdateAngularSpeed(angularSpeedRange); }