示例#1
0
    /// <summary>
    /// precompute atmosphere, normal and vertex data
    /// </summary>
    public void Precompute()
    {
        K        = Screen.width / (2f * Mathf.Tan((65f / 2f) * Mathf.Deg2Rad));
        m_perlin = new ImprovedPerlinNoise(0);
        m_perlin.LoadResourcesFor3DNoise();

        Texture2D perm = m_perlin.GetPermutationTable2D();
        Texture2D grad = m_perlin.GetGradient3D();

        VertexComputeShader.SetTexture(0, "_PermTable2D", perm);
        VertexComputeShader.SetTexture(0, "_Gradient3D", grad);

        mat.SetTexture(PermTable2D, perm);
        mat.SetTexture(Gradient3D, grad);

        VertexComputeBuffer    = new ComputeBuffer((ChunkSegments + 2) * (ChunkSegments + 2), 12);
        NormalComputeBuffer    = new ComputeBuffer((ChunkSegments + 2) * (ChunkSegments + 2), 12);
        PlanetMapCreatorBuffer = new ComputeBuffer(1024 * 1024, 32);

        VertexComputeShader.SetBuffer(0, "vertexBuffer", VertexComputeBuffer);
        VertexComputeShader.SetBuffer(0, "normalBuffer", NormalComputeBuffer);

        PlanetMapGeneratorShader.SetBuffer(0, "Output", PlanetMapCreatorBuffer);
        PlanetMapGeneratorShader.SetTexture(0, "_PermTable2D", perm);
        PlanetMapGeneratorShader.SetTexture(0, "_Gradient3D", grad);

        UpdateNoise();
    }
示例#2
0
    void Start()
    {
        m_perlin = new ImprovedPerlinNoise(m_seed);

        m_perlin.LoadResourcesFor3DNoise();

        GetComponent <Renderer>().material.SetTexture("_PermTable2D", m_perlin.GetPermutationTable2D());
        GetComponent <Renderer>().material.SetTexture("_Gradient3D", m_perlin.GetGradient3D());
    }
        public void Init()
        {
            DontDestroyOnLoad(this);

            noise = new ImprovedPerlinNoise(seed);
            noise.LoadResourcesFor3DNoise();
            renderer.material.SetTexture("_PermTable2D", noise.GetPermutationTable2D());
            renderer.material.SetTexture("_Gradient3D", noise.GetGradient3D());
            currentTime = 0;
            renderer.material.SetFloat("_Evolution", currentTime);
        }
示例#4
0
        protected override void Start()
        {
            base.Start();

            if (TerrainNode == null)
            {
                TerrainNode = transform.parent.GetComponent <TerrainNode>();
            }
            if (TerrainNode.Body == null)
            {
                TerrainNode.Body = transform.parent.GetComponentInParent <CelestialBody>();
            }

            var tileSize = GetTileSize(0);

            if ((tileSize - GetBorder() * 2 - 1) % (TerrainNode.Body.GridResolution - 1) != 0)
            {
                throw new InvalidParameterException("Tile size - border * 2 - 1 must be divisible by grid mesh resolution - 1" + string.Format(": {0}-{1}", tileSize, GetBorder()));
            }

            var storage = Cache.GetStorage(0) as GPUTileStorage;

            if (storage == null)
            {
                throw new InvalidStorageException("Storage must be a GPUTileStorage");
            }

            if (storage.FilterMode != FilterMode.Point)
            {
                throw new InvalidParameterException("GPUTileStorage filter must be point. There will be seams in the terrain otherwise");
            }

            uniforms = new Uniforms();

            Noise = new ImprovedPerlinNoise(UpsampleSettings.Seed);
            Noise.LoadResourcesFor3DNoise();
            UpSampleMaterial.SetTexture("_PermTable2D", Noise.GetPermutationTable2D());
            UpSampleMaterial.SetTexture("_Gradient3D", Noise.GetGradient3D());
        }
		public void Init()
		{
			DontDestroyOnLoad (this);

			noise = new ImprovedPerlinNoise (seed);
			noise.LoadResourcesFor3DNoise ();
			renderer.material.SetTexture ("_PermTable2D", noise.GetPermutationTable2D ());
			renderer.material.SetTexture ("_Gradient3D", noise.GetGradient3D ());
			currentTime = 0;
			renderer.material.SetFloat ("_Evolution", currentTime);
		}