Example #1
0
 public void Init(GridService grid)
 {
     int x = _lifes.SimSizeX, y = _lifes.SimSizeY, z = _lifes.SimSizeZ;
     grid.SetParams(_compute);
     _compute.SetBuffer(_kernelInitHashes, ShaderConst.BUF_LIFE, _lifes.Lifes);
     _compute.SetBuffer(_kernelInitHashes, ShaderConst.BUF_POSITION, _positions.P0);
     SetBuffer(_compute, _kernelInitHashes);
     _compute.Dispatch(_kernelInitHashes, x, y, z);
 }
Example #2
0
        public void Init(GridService grid)
        {
            int x = _lifes.SimSizeX, y = _lifes.SimSizeY, z = _lifes.SimSizeZ;

            grid.SetParams(_compute);
            _compute.SetBuffer(_kernelInitHashes, ShaderConst.BUF_LIFE, _lifes.Lifes);
            _compute.SetBuffer(_kernelInitHashes, ShaderConst.BUF_POSITION, _positions.P0);
            SetBuffer(_compute, _kernelInitHashes);
            _compute.Dispatch(_kernelInitHashes, x, y, z);
        }
Example #3
0
        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);
        }