double tanAlpha = Math.tan(Math.acos(HdotN));
double cos4Alpha = HdotN * HdotN * HdotN * HdotN;
Medium medium = x.getAmbientMedium();
Color n1 = medium.refractiveIndex(x.getPosition(), lambda);
Color k1 = medium.extinctionIndex(x.getPosition(), lambda);
Color n2 = n.sample(lambda);
Color k2 = k.sample(lambda);
Color F = MaterialUtil.reflectance(E, n1, k1, n2, k2, N);
double D = Math.exp(-(tanAlpha * tanAlpha / mSquared)) / (Math.PI * mSquared * cos4Alpha);
double G = Math.min(1.0, Math.min(2.0 * HdotN * EdotN / EdotH, 2.0 * HdotN * LdotN / EdotH));