public VoxelMapData(ComputeShader shader, VGenConfig vGenConfig) { perlinGen = shader; this.vGenConfig = vGenConfig; setMapOffset(Vector3.zero); initKernels(); initTemporaryBuffers(); }
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; }
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; }
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(); }
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(); }
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); }