public void init(string name, SunflowAPI api) { api.geometry(name, this); api.shader(name + ".shader", this); api.parameter("shaders", name + ".shader"); api.instance(name + ".instance", name); for (int i = 0, j = 0; i < triangles.Length; i += 3, j++) { TriangleLight t = new TriangleLight(j, this); string lname = string.Format("%s.light[%d]", name, j); api.light(lname, t); } }
private float CalcTriangleArea(TriangleLight lt) { Vector3 e0 = lt.v2 - lt.v1; Vector3 e1 = lt.v3 - lt.v1; return 0.5f * Vector3.Cross(ref e0, ref e1).Length(); }