/// <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(); }
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); }
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); }