Exemplo n.º 1
0
 private float brdf(Vector3 i, Vector3 o, OrthoNormalBasis basis)
 {
     float fr = 4 * (float)Math.PI * alphaX * alphaY;
     fr *= (float)Math.Sqrt(basis.untransformZ(i) * basis.untransformZ(o));
     Vector3 h = Vector3.add(i, o, new Vector3());
     basis.untransform(h);
     float hx = h.x / alphaX;
     hx *= hx;
     float hy = h.y / alphaY;
     hy *= hy;
     float hn = h.z * h.z;
     fr = (float)Math.Exp(-(hx + hy) / hn) / fr;
     return fr;
 }