/* A library of lighting functions January 19 2007 LightingUtils.h */ color plastic(normal n; vector i; float ka, kd, ks, roughness; color hilitecolor) { normal nn = normalize(n); vector ii = normalize(i); normal nf = faceforward(nn, ii); color ambientcolor = ka * ambient(); color diffusecolor = kd * diffuse(nf); color speccolor = ks * specular(nf, -ii, roughness) * hilitecolor; return (ambientcolor + diffusecolor +speccolor); } color envmapping(normal norm; vector incident; string mapname; string coordname; float kenv) { color envcolor = 0; if(mapname != "") { normal n = normalize(norm); vector i = normalize(incident); normal nf = faceforward(n, i); vector R = reflect(i, nf); R = transform(coordname, R); envcolor = environment(mapname, R) * kenv; } return envcolor; }