public void Solve() { _velocities.SetBuffer(_compute, _kernel); _positions.SetBuffer(_compute, _kernel); _lifes.SetBuffer(_compute, _kernel); _broadphase.SetBuffer(_compute, _kernel); _compute.Dispatch(_kernel, _velocities.SimSizeX, _velocities.SimSizeY, _velocities.SimSizeZ); _velocities.Swap(); }
public void Solve() { if (_polygons.PolygonCount == 0) { return; } _velocities.SetBuffer(_compute, _kernel); _positions.SetBuffer(_compute, _kernel); _lifes.SetBuffer(_compute, _kernel); _polygons.SetBuffer(_compute, _kernel); _compute.Dispatch(_kernel, _velocities.SimSizeX, _velocities.SimSizeY, _velocities.SimSizeZ); _velocities.Swap(); }
public void Detect(float distance) { int x = _lifes.SimSizeX, y = _lifes.SimSizeY, z = _lifes.SimSizeZ; _hashes.Init(_grid); _sort.Init(_keys); _sort.SortInt(_keys, _hashes.Hashes); _grid.Construct(_keys); _grid.SetParams(_compute); _compute.SetFloat(ShaderConst.PROP_BROADPHASE_SQR_DISTANCE, distance * distance); _compute.SetBuffer(_kernelSolve, ShaderConst.BUF_BROADPHASE_KEYS, _keys); _positions.SetBuffer(_compute, _kernelSolve); _lifes.SetBuffer(_compute, _kernelSolve); _grid.SetBuffer(_compute, _kernelSolve); SetBuffer(_compute, _kernelSolve); _compute.Dispatch(_kernelSolve, x, y, z); }
public void Check() { _lifes.SetBuffer(_compute, _kernel); _positions.SetBuffer(_compute, _kernel); _compute.Dispatch(_kernel, _positions.SimSizeX, _positions.SimSizeY, _positions.SimSizeZ); }