void Start() { m_perlin = new ImprovedPerlinNoise(m_seed); m_perlin.LoadResourcesFor4DNoise(); GetComponent <Renderer>().material.SetTexture("_PermTable1D", m_perlin.GetPermutationTable1D()); GetComponent <Renderer>().material.SetTexture("_PermTable2D", m_perlin.GetPermutationTable2D()); GetComponent <Renderer>().material.SetTexture("_Gradient4D", m_perlin.GetGradient4D()); }
void Start() { //There are 8 threads run per group so N must be divisible by 8. if (N % 8 != 0) { throw new System.ArgumentException("N must be divisible be 8"); } //Holds the voxel values, generated from perlin noise. m_noiseBuffer = new ComputeBuffer(N * N * N, sizeof(float)); //Holds the normals of the voxels. m_normalsBuffer = new ComputeBuffer(N * N * N, sizeof(float) * 3); //Holds the verts generated by the marching cubes. m_meshBuffer = new ComputeBuffer(SIZE, sizeof(float) * 7); //These two buffers are just some settings needed by the marching cubes. m_cubeEdgeFlags = new ComputeBuffer(256, sizeof(int)); m_cubeEdgeFlags.SetData(cubeEdgeFlags); m_triangleConnectionTable = new ComputeBuffer(256 * 16, sizeof(int)); m_triangleConnectionTable.SetData(triangleConnectionTable); //Make the perlin noise, make sure to load resources to match shader used. perlin = new ImprovedPerlinNoise(m_seed); perlin.LoadResourcesFor4DNoise(); //Constract a mesh. var vcount = N * N * 3 * 5; var vertices = new Vector3[vcount]; var uv = new Vector2[vcount]; for (var i = 0; i < vcount; i++) { uv[i] = new Vector2(i, 0); } var indices = new int[vcount]; for (var i = 0; i < vcount; i++) { indices[i] = i; } m_mesh = new Mesh(); m_mesh.vertices = vertices; m_mesh.uv = uv; m_mesh.SetIndices(indices, MeshTopology.Triangles, 0); m_mesh.bounds = new Bounds(Vector3.zero, Vector3.one * 1000); }
void Start () { //There are 8 threads run per group so N must be divisible by 8. if(N%8 != 0) throw new System.ArgumentException("N must be divisible be 8"); //Holds the voxel values, generated from perlin noise. m_noiseBuffer = new ComputeBuffer(N * N * N, sizeof(float)); //Holds the normals of the voxels. m_normalsBuffer = new ComputeBuffer(N * N * N, sizeof(float)*3); //Holds the verts generated by the marching cubes. m_meshBuffer = new ComputeBuffer(SIZE, sizeof(float)*7); //These two buffers are just some settings needed by the marching cubes. m_cubeEdgeFlags = new ComputeBuffer(256, sizeof(int)); m_cubeEdgeFlags.SetData(cubeEdgeFlags); m_triangleConnectionTable = new ComputeBuffer(256 * 16, sizeof(int)); m_triangleConnectionTable.SetData(triangleConnectionTable); //Make the perlin noise, make sure to load resources to match shader used. perlin = new ImprovedPerlinNoise(m_seed); perlin.LoadResourcesFor4DNoise(); //Constract a mesh. var vcount = N * N * 3 * 5; var vertices = new Vector3[vcount]; var uv = new Vector2[vcount]; for (var i = 0; i < vcount; i++) uv[i] = new Vector2(i, 0); var indices = new int[vcount]; for (var i = 0; i < vcount; i++) indices[i] = i; m_mesh = new Mesh(); m_mesh.vertices = vertices; m_mesh.uv = uv; m_mesh.SetIndices(indices, MeshTopology.Triangles, 0); m_mesh.bounds = new Bounds(Vector3.zero, Vector3.one * 1000); }