Cycles: svn merge -r41225:41232 ^/trunk/blender
[blender.git] / intern / cycles / kernel / osl / nodes / node_fresnel.h
1
2 float fresnel_dielectric(vector Incoming, normal Normal, float eta)
3 {
4         /* compute fresnel reflectance without explicitly computing
5            the refracted direction */
6         float c = fabs(dot(Incoming, Normal));
7         float g = eta * eta - 1 + c * c;
8         float result;
9
10         if(g > 0) {
11                 g = sqrt(g);
12                 float A =(g - c)/(g + c);
13                 float B =(c *(g + c)- 1)/(c *(g - c)+ 1);
14                 result = 0.5 * A * A *(1 + B * B);
15         }
16         else
17                 result = 1.0;  /* TIR (no refracted component) */
18
19         return result;
20 }
21