Ejemplo n.º 1
0
        void Start()
        {
            count       = GPUVoxelizer.GetNearPow2(count);
            resolutions = Mathf.FloorToInt(Mathf.Log(count, 2)) - 2;

            levels = new GPUVoxelData[resolutions];
            for (int i = 0; i < resolutions; i++)
            {
                levels[i] = GPUVoxelizer.Voxelize(voxelizer, mesh, count >> i, true, true);
            }

            var pointMesh = BuildPoints(levels[0]);

            particleBuffer = new ComputeBuffer(pointMesh.vertexCount, Marshal.SizeOf(typeof(VParticle_t)));

            GetComponent <MeshFilter>().sharedMesh = pointMesh;

            block    = new MaterialPropertyBlock();
            renderer = GetComponent <Renderer>();
            renderer.GetPropertyBlock(block);
            bounds = mesh.bounds;

            setupKernel  = new Kernel(particleUpdate, kSetupKernelKey);
            updateKernel = new Kernel(particleUpdate, kUpdateKernelKey);

            Setup(levels[0]);
        }