// Use this for initialization void Start() { if (vertBuffer == null) { vertBuffer = gameObject.GetComponent <VertBuffer>(); } if (triBuffer == null) { triBuffer = gameObject.GetComponent <TriangleBuffer>(); } print(distBetweenHairs); transformValues = new float[16]; fullVertCount = totalHairs * numVertsPerHair; material = new Material(material); numGroups = (fullVertCount + (numThreads - 1)) / numThreads; outBuffer = new ComputeBuffer(numThreads, 4 * sizeof(float)); outFloats = new float[numThreads * 4]; finalBuffer = new ComputeBuffer(1, 4 * sizeof(float)); finalFloats = new float[4]; _kernelCollision = collisionShader.FindKernel("CSMain"); _kernelConstraint = constraintShader.FindKernel("CSMain"); CreateBuffers(); Reset(); }
void SetUp() { tri = GetComponent <TriangleBuffer>(); vert = GetComponent <VertBuffer>(); values = new float[dimensions * dimensions * dimensions * 8]; for (int i = 0; i < dimensions * dimensions * dimensions; i++) { values[i * 8 + 0] = 1000; values[i * 8 + 1] = 1000; values[i * 8 + 2] = 1000; values[i * 8 + 3] = 1000; values[i * 8 + 4] = 1000; values[i * 8 + 5] = 1000; values[i * 8 + 6] = 1000; values[i * 8 + 7] = 1000; } vertCount = dimensions * dimensions * dimensions; numGroups = (vertCount + (numThreads - 1)) / numThreads; k_depth = calcShader.FindKernel("GetDepth"); k_normal = calcShader.FindKernel("GetNormal"); k_finalDepth = calcShader.FindKernel("GetFinalDist"); calculated = false; normalsCalculated = false; }
// Use this for initialization void Start() { if (vertBuffer == null) { vertBuffer = gameObject.GetComponent <VertBuffer>(); } if (triBuffer == null) { triBuffer = gameObject.GetComponent <TriangleBuffer>(); } if (cloneVertBuffer == null) { cloneVertBuffer = toClone.GetComponent <VertBuffer>(); } if (cloneTriBuffer == null) { cloneTriBuffer = toClone.GetComponent <TriangleBuffer>(); } material = new Material(material); numGroups = (numberMeshes + (numThreads - 1)) / numThreads; _kernel = physics.FindKernel("CSMain"); CreateBuffers(); }
// Use this for initialization void Start() { if (vertBuffer == null) { vertBuffer = gameObject.GetComponent <VertBuffer>(); } if (triBuffer == null) { triBuffer = gameObject.GetComponent <TriangleBuffer>(); } print(distBetweenHairs); fullVertCount = totalHairs * numVertsPerHair; material = new Material(material); numGroups = (fullVertCount + (numThreads - 1)) / numThreads; _kernelCollision = collisionShader.FindKernel("CSMain"); _kernelConstraint = constraintShader.FindKernel("CSMain"); CreateBuffers(); Reset(); }
protected override void DisposeBuffers() { if (!KeepBuffersAlive) { VertBuffer?.Dispose(); IndexBuffer?.Dispose(); } }
// Use this for initialization public override void BeforeCreateBuffer() { structSize = 1 + 16 + 2 + 3 + 3 + 3; if (vertBuffer == null) { vertBuffer = gameObject.GetComponent <VertBuffer>(); } if (triBuffer == null) { triBuffer = gameObject.GetComponent <TriangleBuffer>(); } if (cloneVertBuffer == null) { cloneVertBuffer = toClone.GetComponent <VertBuffer>(); } if (cloneTriBuffer == null) { cloneTriBuffer = toClone.GetComponent <TriangleBuffer>(); } }
protected override void DisposeBuffers() { VertBuffer?.Dispose(); IndexBuffer?.Dispose(); }
public static Point getVertInfo(int seed, float randomVal, float[] triAreas, int[] triValues, VertBuffer vertBuffer) { int tri0 = 3 * HelperFunctions.getTri(randomVal, triAreas); int tri1 = tri0 + 1; int tri2 = tri0 + 2; tri0 = triValues[tri0]; tri1 = triValues[tri1]; tri2 = triValues[tri2]; Vector3 pos = HelperFunctions.GetRandomPointInTriangle(seed, vertBuffer.vertices[tri0], vertBuffer.vertices[tri1], vertBuffer.vertices[tri2]); float a0 = HelperFunctions.AreaOfTriangle(pos, vertBuffer.vertices[tri1], vertBuffer.vertices[tri2]); float a1 = HelperFunctions.AreaOfTriangle(pos, vertBuffer.vertices[tri0], vertBuffer.vertices[tri2]); float a2 = HelperFunctions.AreaOfTriangle(pos, vertBuffer.vertices[tri0], vertBuffer.vertices[tri1]); float aTotal = a0 + a1 + a2; float p0 = a0 / aTotal; float p1 = a1 / aTotal; float p2 = a2 / aTotal; Vector3 nor = vertBuffer.normals[tri0] * p0 + vertBuffer.normals[tri1] * p1 + vertBuffer.normals[tri2] * p2; nor = nor.normalized; // Vector3 color = tri0.color * p0 + tri1.color * p1 + tri2.color * p2; Vector2 uv = vertBuffer.uvs[tri0] * p0 + vertBuffer.uvs[tri1] * p1 + vertBuffer.uvs[tri2] * p2; Point p = new Point(); p.uv = uv; p.nor = nor; p.triWeights = new Vector3(p0, p1, p2); p.triIDs = new Vector3(tri0, tri1, tri2); return(p); }