How to increase the performance of terrain generation? Unity 2017.2.0f3
I want to make an android game for a friend.
A typically sidescrolling space game, but in this case with a third-person view.
Since it is a complex calculation to instantiate new terrain, based on the position of the player, I let the vertices of the terrain move to my player, so that tranform-component is changed.
For this I use the PerlinNoise algorithm and add a constantly increasing offset.
The problem is that the texture of the terrain does not move along with it. That's why I use SplatPrototypes.
 SplatPrototype[] splatPrototype = terrain.terrainData.splatPrototypes;
         splatPrototype[0].tileOffset = new Vector2(0.0f, offsetX * offsetMultiplier);
 
         terrain.terrainData.splatPrototypes = splatPrototype;
This works quite well and also the terrain is created and changed very reliably by a simple algorithm.
 using UnityEngine;
 
 public class DynamicTerrain : MonoBehaviour {
 
     public int width = 256;
     public int height = 256;
 
     public int depth = 5;
 
     public float offsetX = 0.0f;
     public float offsetY;
 
     private float offsetMultiplier = 6.5f;
 
     public float scale = 20.0f;
 
     // Use this for initialization
     void Start () {
         Terrain terrain = GetComponent<Terrain>();
         terrain.terrainData = GenerateTerrain(terrain.terrainData);
     }
     
     // Update is called once per frame
     void Update () {
         Game game = new Game();
         offsetX += game.speed * Time.deltaTime;
 
         Terrain terrain = GetComponent<Terrain>();
         terrain.terrainData = GenerateTerrain(terrain.terrainData);
 
         // Texture bewegt sich mit dem Terrain mit
         SplatPrototype[] splatPrototype = terrain.terrainData.splatPrototypes;
         splatPrototype[0].tileOffset = new Vector2(0.0f, offsetX * offsetMultiplier);
 
         terrain.terrainData.splatPrototypes = splatPrototype;
     }
 
     private TerrainData GenerateTerrain (TerrainData terraindata)
     {
         terraindata.heightmapResolution = width + 1;
 
         terraindata.size = new Vector3(width, depth, height);
         terraindata.SetHeights(0, 0, GenerateHeight());
 
         return terraindata;
     }
 
     private float[,] GenerateHeight ()
     {
         float[,] heights = new float[width, height];
 
         for (int x = 0; x < width; x++)
         {
             for (int y = 0; y < height; y++)
             {
                 heights[x, y] = CalculateHeight(x, y);
             }
         }
 
         return heights;
     }
 
     private float CalculateHeight(int x, int y)
     {
         float xCoord = (float) x / width * scale + offsetX;
         float yCoord = (float) y / height * scale;
 
         return Mathf.PerlinNoise(xCoord, yCoord);
     }
 }
 
The problem is that the algorithm is easy to process for a PC, but not for a mobile device.
So here is my question:
Can I simplify the calculations somehow, in favor of the performance, so that it works on a mobile device fluently and the result remains the same?
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                