I’m creating a dynamic plane which I’m going to displace with some noise.
I began by generating a mesh with unique vertices, but wanted smooth shading - so i changed it to a plane with shared vertices.
My performance took a HUGE dive - what could be the issue?
public static Mesh BuildPlaneMesh(float length, int subdivisions) {
Mesh mesh = new Mesh();
mesh.name = "ScriptedMesh";
List<Vector3> vertices = new List<Vector3>();
List<Vector2> uvs = new List<Vector2>();
List<int> triangles = new List<int>();
List<Vector3> normals = new List<Vector3>();
int numVerticesPerRow = subdivisions * 2 + 1;
float sideLength = length / (numVerticesPerRow - 1);
for (int i=0; i < numVerticesPerRow; i++) {
for (int j=0; j < numVerticesPerRow; j++) {
// building vertices
float xCoord = sideLength * j - (length/2);
float zCoord = sideLength * i - (length/2);
vertices.Add(new Vector3(xCoord, 0, zCoord));
uvs.Add(new Vector2((xCoord + length/2) / length, (zCoord + length/2) / length));
normals.Add(new Vector3(0, 1, 0));
// winding
if (j != numVerticesPerRow - 1 && i != numVerticesPerRow - 1) {
for (int k = 0; k < numVerticesPerRow - 1; k++) {
int[] initialTriangleList =
new int[] { numVerticesPerRow, 1, 0, 1, numVerticesPerRow, numVerticesPerRow + 1 };
foreach (int index in initialTriangleList) {
triangles.Add((index + k) + (numVerticesPerRow * i));
}
}
}
}
}
mesh.vertices = vertices.ToArray();
mesh.uv = uvs.ToArray();
mesh.triangles = triangles.ToArray();
mesh.normals = normals.ToArray();
return mesh;
}
The mesh looks fine and triangles seem to be facing the right way. Once the subdivisions start to go up, i see a huge dive in performance with the current implementation - what could be the issue?