protected void DepthKernel(float dt)
        {
            var kernel = new Kernel(voxelControl, "Depth");

            SetupControlKernel(kernel, dt);

            voxelControl.SetVector("_TileOffset", tileOffset);

            var instance = CityGlobal.Instance;

            if (instance.Tiles.ContainsKey(tileTag))
            {
                var u  = instance.Tiles[tileTag];
                var tb = BoundsWorldToLocal(u.WBounds, transform);
                voxelControl.SetVector("_TileBoundsMin", tb.min);
                voxelControl.SetVector("_TileBoundsMax", tb.max);

                var wb = BoundsWorldToLocal(instance.WholeBounds, transform);
                voxelControl.SetVector("_WholeBoundsMin", wb.min);
                voxelControl.SetVector("_WholeBoundsMax", wb.max);

                // uv (xy : scale, wz : offset)
                voxelControl.SetVector(
                    "_Tile",
                    new Vector4(
                        tb.size.x / wb.size.x,
                        tb.size.y / wb.size.y,
                        (tb.min.x - wb.min.x) / wb.size.x,
                        (tb.min.y - wb.min.y) / wb.size.y
                        )
                    );
            }

            GPUHelper.Dispatch3D(voxelControl, kernel, data.Width, data.Height, data.Depth);
        }
Exemplo n.º 2
0
        public void Clear()
        {
            var kernel = compute.FindKernel("Clear");

            compute.SetTexture(kernel, "_Volume", buffer);
            GPUHelper.Dispatch3D(compute, kernel, size, size, size);
        }
Exemplo n.º 3
0
 protected void CalculateNormal()
 {
     var kernel = compute.FindKernel("CalculateNormal");
     compute.SetInt("_Width", N);
     compute.SetInt("_Height", N);
     compute.SetInt("_Depth", N);
     compute.SetFloat("_Inv", 1f / N);
     compute.SetTexture(kernel, "_Volume", volume.Tex);
     compute.SetTexture(kernel, "_Result", normalBuffer);
     GPUHelper.Dispatch3D(compute, kernel, N, N, N);
 }
Exemplo n.º 4
0
        protected void Build()
        {
            var kernel = compute.FindKernel("Build");
            compute.SetInt("_Width", N);
            compute.SetInt("_Height", N);
            compute.SetInt("_Depth", N);
            compute.SetInt("_Border", 1);
            compute.SetFloat("_Inv", 1f / N);
            compute.SetFloat("_Threshold", threshold);

            compute.SetTexture(kernel, "_Volume", volume.Tex);
            compute.SetBuffer(kernel, "_Buffer", vertexBuffer);
            compute.SetTexture(kernel, "_Normals", normalBuffer);

            compute.SetBuffer(kernel, "_CubeEdgeFlags", cubeEdgeFlags);
            compute.SetBuffer(kernel, "_TriangleConnectionTable", triangleConnectionTable);
            GPUHelper.Dispatch3D(compute, kernel, N, N, N);
        }