surface cloudBaker(string bakename = "") { normal Nn = normalize(N); // micropolygon area float a = area(P, "dicing"); // average opacity float opacity = 0.333333 * (Os[0] + Os[1] + Os[2]); /*reduce area if non-opaque; artifically reduces the area of micropolys covering any given point by its opacity to fake in less occlusion*/ a *= opacity; if(a > 0) /*file location, name of information(s) to be output, position in space, the normal of that position, not sure about interpolate, pair(s) of data name and type for output*/ bake3d(bakename, "_area", P, Nn, "interpolate", 1, "_area", a); Ci = Cs * Os; Oi = Os; }