using UnityEngine;
using System.Collections;
public class Test : MonoBehaviour
{
public ComputeShader Generator;
public MeshTopology Topology;
void OnEnable()
{
var computedMeshPoints = ComputeMesh();
CreateMeshFrom(computedMeshPoints);
}
private Vector3[] ComputeMesh()
{
var size = (32*32) * 4; // 4 points added for each x,z pos
var buffer = new ComputeBuffer(size, 12, ComputeBufferType.Append);
Generator.SetBuffer(0, "vertexBuffer", buffer);
Generator.Dispatch(0, 1, 01, 01);
var results = new Vector3[size];
buffer.GetData(results);
buffer.Dispose();
return results;
}
private void CreateMeshFrom(Vector3[] generatedPoints)
{
var filter = GetComponent<MeshFilter>();
var renderer = GetComponent<MeshRenderer>();
if (generatedPoints.Length > 0)
{
var mesh = new Mesh { vertices = generatedPoints };
var colors = new Color[generatedPoints.Length];
var indices = new int[generatedPoints.Length];
//TODO: build this different based on topology of the mesh being generated
for (int i = 0; i < indices.Length; i++)
{
indices[i] = i;
colors[i] = Color.blue;
}
mesh.SetIndices(indices, Topology, 0);
mesh.colors = colors;
mesh.RecalculateNormals();
mesh.Optimize();
mesh.RecalculateBounds();
filter.sharedMesh = mesh;
}
else
{
filter.sharedMesh = null;
}
}
}
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user
Bumped by Community user