Spectrum Lafortune::f(const Vector &wo, const Vector &wi) const { Spectrum ret = R * INV_PI; for (u_int i = 0; i < nLobes; ++i) { // Add contribution for $i$th Phong lobe Spectrum v = x[i] * wo.x * wi.x + y[i] * wo.y * wi.y + z[i] * wo.z * wi.z; ret += v.Pow(exponent[i]); } return ret; }