Esempio n. 1
0
    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());
    }
Esempio n. 2
0
    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);
    }