public void AddChunkToRender(ComputeBuffer vertices, ComputeBuffer normals, Vector3 worldPosition, int verticesCount) { MeshReadbackRequest req = new MeshReadbackRequest { verticesRequest = AsyncGPUReadback.Request(vertices), normalsRequest = AsyncGPUReadback.Request(normals), worldPosition = worldPosition, verticesCount = verticesCount, }; readBackMeshesRequests.Add(req); }
void GenerateMesh(MeshReadbackRequest req) { var chunk = Instantiate(chunkPrefab, req.worldPosition, Quaternion.identity, parent); MeshFilter mf = chunk.GetComponent <MeshFilter>(); Vector3[] vertices = req.verticesRequest.GetData <Vector3>().Take(req.verticesCount).ToArray(); var mesh = new Mesh { vertices = vertices, normals = req.normalsRequest.GetData <Vector3>().Take(req.verticesCount).ToArray(), // Generate a dummy triangle indicies buffer because mesh triangles = Enumerable.Range(0, req.verticesCount).ToArray(), }; mf.sharedMesh = mesh; }