public PrecomputedChunkCollection PrecomputeChunk() { ///---Shader setup--- //--Kernals int sampleHandler = samplerShader.FindKernel("PrecomputeChunkSampler"); int caseShaderHandler = caseShader.FindKernel("PrecomputeChunkCase"); //--Textures //-Lerp sampler_texture = CreateTexture(18, 18 * 18); samplerShader.SetTexture(sampleHandler, "DebugImage", sampler_texture); //-Case caseNumber_texture = CreateTexture(16, 16 * 16); caseShader.SetTexture(caseShaderHandler, "CaseNumber_Texture", caseNumber_texture); //--Float Arrays //-Lerp BufferPair samples = SetupComputeBuffer(sampleHandler, samplerShader, "SampleField", 18 * 18 * 18); //-Case BufferPair caseNumbers = SetupComputeBuffer(caseShaderHandler, caseShader, "CaseNumber_Floats", 16 * 16 * 16); //--Setting Offsets SetupShaderOffsets(samplerShader); SetupShaderOffsets(caseShader); //--Dispatch samplerShader.Dispatch(sampleHandler, 18 / 6, 18 / 6, 18 / 6); caseShader.Dispatch(caseShaderHandler, 16 / 8, 16 / 8, 16 / 8); //--Returning Textures sampler_material.mainTexture = sampler_texture; caseNumber_material.mainTexture = caseNumber_texture; //--Fetch data for method return FetchArrayData(samples); FetchArrayData(caseNumbers); PrecomputedChunkCollection collection = new PrecomputedChunkCollection(); collection.samples = samples.array; collection.caseNumbers = caseNumbers.array; return(collection); }
public Mesh GenerateMesh() { sampler = new ChunkPrecomputer(samplerShader, caseNumberShader); collection = sampler.PrecomputeChunk(); listOfVectors = new List <Vector3>(); listOfTriangles = new List <int>(); hashedVectors = new Dictionary <Vector3, int>(); hashedIndex = 0; Vector3 position = new Vector3(); for (int x = 0; x < 16; x++) { position.x = x; for (int y = 0; y < 16; y++) { position.y = y; for (int z = 0; z < 16; z++) { position.z = z; March(position); } } } Mesh mesh = new Mesh(); Debug.Log("Number of Vectors : " + listOfVectors.Count); Debug.Log("Vectors : " + listOfVectors); mesh.SetVertices(listOfVectors); Debug.Log("Number of Triangles : " + listOfTriangles.Count); Debug.Log("Triangles : " + listOfTriangles); mesh.SetTriangles(listOfTriangles, 0); mesh.RecalculateNormals(); mesh.RecalculateBounds(); mesh.RecalculateTangents(); return(mesh); }