Exemple #1
0
        public VoxelMapData(ComputeShader shader, VGenConfig vGenConfig)
        {
            perlinGen       = shader;
            this.vGenConfig = vGenConfig;
            setMapOffset(Vector3.zero);

            initKernels();
            initTemporaryBuffers();
        }
Exemple #2
0
        public VoxelMapFormat(ComputeShader shader, ComputeShader hilbertIndexShader, VoxelMapData data, VGenConfig vGenConfig)
        {
            meshGen = shader;
            this.hilbertIndexShader = hilbertIndexShader;
            this.vGenConfig         = vGenConfig;

            initKernels();
            initTemporaryBuffers();
            voxelMapData = data;
            setTemporaryBuffers();

            SolidVoxels = null;
        }
Exemple #3
0
        private string appendValues(uint size, string XToHilbert, string HilbertIndexToXYZ)
        {
            List <IntVector3.IndexedIntVector3> xyzs = new IntVector3(size).IteratorXYZ.ToList();
            int area = xyzs.Count; // (int)(size * size * size);
            int bits = VGenConfig.GetHilbertBits(area);


            uint[] hilbertToXYZ = new uint[area];

            StringBuilder XtoHBuilder   = new StringBuilder();
            StringBuilder HilToXBuilder = new StringBuilder();

            XtoHBuilder.Append(XToHilbert);
            HilToXBuilder.Append(HilbertIndexToXYZ);

            for (int i = 0; i < area; ++i)
            {
                int hindex = xyzs[i].v.ToUint3().CoordsToFlatHilbertIndex(bits);
                hilbertToXYZ[hindex] = (uint)i;

                XtoHBuilder.Append(string.Format(" {0},", hindex));
                //XToHilbert = string.Format("{0} {1},", XToHilbert, hindex);
                if (i % 16 == 15)
                {
                    XtoHBuilder.AppendLine();
                    //XToHilbert = string.Format("{0} {1}", XToHilbert, Environment.NewLine);
                }
            }

            for (int j = 0; j < hilbertToXYZ.Length; ++j)
            {
                HilToXBuilder.Append(string.Format(" {0},", hilbertToXYZ[j]));
                //HilbertIndexToXYZ = string.Format("{0} {1},", HilbertIndexToXYZ, hilbertToXYZ[j]);
                if (j % 16 == 15)
                {
                    HilToXBuilder.AppendLine();
                    //HilbertIndexToXYZ = string.Format("{0} {1}", HilbertIndexToXYZ, Environment.NewLine);
                }
            }

            XtoHBuilder.Append("};");
            //XToHilbert += "};";
            HilToXBuilder.Append("};");
            //HilbertIndexToXYZ += "};";

            XtoHBuilder.AppendLine();
            XtoHBuilder.Append(HilToXBuilder);
            return(XtoHBuilder.ToString());
            //XToHilbert += "\n\n" + HilbertIndexToXYZ;
            //return XToHilbert;
        }
Exemple #4
0
        public void initialize(
            LODBuffers buffers,
            VGenConfig vGenConfig = null
            )
        {
            size         = 1f;
            this.buffers = buffers;
            globalLight  = GameObject.Find("GlobalLight").transform;

            bounds   = new Bounds(transform.position + this.vGenConfig.ChunkSize / 2f * size, this.vGenConfig.ChunkSize * size);
            material = new Material(geometryShader);
            setMaterialConstants();

            enabled = true;

            //SetUpEmptyChunkMarker();
        }
Exemple #5
0
        public static void WriteChunkCGInc()
        {
            VGenConfig vGenConfig = FindObjectOfType <VGenConfig>();

            string config = string.Format(ConfigFormat,
                                          vGenConfig.ChunkSizeX,
                                          vGenConfig.ChunkSizeY,
                                          vGenConfig.ChunkSizeZ,
                                          vGenConfig.ColumnsPerChunk,
                                          vGenConfig.VoxelsPerChunk,
                                          vGenConfig.ChunkThreadsPerGroupX,
                                          vGenConfig.ChunkThreadsPerGroupY,
                                          vGenConfig.ChunkThreadsPerGroupZ,
                                          VGenConfig.VoxelsPerMapData,
                                          vGenConfig.MapDataDimY,
                                          vGenConfig.BedRockToMax,
                                          vGenConfig.SeaLevel,
                                          vGenConfig.MipLevels,
                                          vGenConfig.ChunkNoiseThreadsPerGroupY,
                                          vGenConfig.ChunkMip64ThreadsPerGroupX,
                                          vGenConfig.ChunkMip64ThreadsPerGroupY,
                                          vGenConfig.ChunkMip64ThreadsPerGroupZ,
                                          vGenConfig.Mip64Divisor,
                                          vGenConfig.NoiseInputDivisor.x, vGenConfig.NoiseInputDivisor.y, vGenConfig.NoiseInputDivisor.z,
                                          vGenConfig.TestShowAll ? String.Empty : "//",
                                          vGenConfig.TestAlwaysAVoxel ? String.Empty : "//",
                                          vGenConfig.TestShapeDirective,
                                          vGenConfig.TestChunkSelectDirective,
                                          vGenConfig.ReverseCastThreadCount,
                                          vGenConfig.ReverseCastClearKernelThreadCount.x,
                                          vGenConfig.ReverseCastClearKernelThreadCount.y,
                                          vGenConfig.TestFillChunkEdges ? String.Empty : "//",
                                          vGenConfig.EmptyVoxel,
                                          vGenConfig.SizeOfExistsMap,
                                          vGenConfig.SizeOfExistsMap27

                                          );

            File.WriteAllText(path, config);
            AssetDatabase.Refresh();
        }
Exemple #6
0
 public AddChunkFinder(IntVector3 halfSize, Transform center, LiveChunks lookup, VGenConfig vGenConfig)
 {
     this.lookup = lookup;
     this.center = center;
     _halfSize   = halfSize;
     resetIterator();
     iterator      = new ProximityIterator3(domain.size.MaxComponent);
     chunkAddQueue = new ChunkAddQueue(domain.size.MaxComponent);
 }