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;
}