示例#1
0
        public GridOptimizer(ParticleNumEnum numParticleEnum, Vec range, Dim dimension)
        {
            numObjects      = (int)numParticleEnum;
            threadGroupSize = numObjects / SIMULATION_BLOCK_SIZE_FOR_GRID;

            // 名前からコンピュートシェーダを取得
            BitonicCS  = (ComputeShader)Resources.Load("BitonicSort");
            GridSortCS = (ComputeShader)Resources.Load(Enum.GetName(typeof(GridType), dimension.GetGridType()));

            gridDim = dimension;
            numGrid = (int)dimension.OwnMultiply();
            gridH   = dimension.GetGridH(range);

            gridBuffer                = new ComputeBuffer(numObjects, Marshal.SizeOf(typeof(Uint2)));
            gridPingPongBuffer        = new ComputeBuffer(numObjects, Marshal.SizeOf(typeof(Uint2)));
            gridIndicesBuffer         = new ComputeBuffer(numGrid, Marshal.SizeOf(typeof(Uint2)));
            sortedObjectsBufferOutput = new ComputeBuffer(numObjects, Marshal.SizeOf(typeof(Data)));

            Debug.Log("=== Initialized Grid Sort Package === \nRange : " + range + "\nNumGrid : " + numGrid + "\nGridDim : " + gridDim + "\nGridH : " + gridH);
        }
示例#2
0
 public NeighborSearchSetting3D(ParticleNumEnum num, Vector3 range, IntDim3D dim) : base(num, range, dim)
 {
 }
示例#3
0
 public NeighborSearchSetting(ParticleNumEnum num, Vec range, Dim dim)
 {
     particleScatterRange = range;
     gridDimension        = dim;
     gridOptimizer        = new GridOptimizer <MyParticleData <Vec>, Dim, Vec>(num, particleScatterRange, gridDimension);
 }