summaryrefslogtreecommitdiffstats
path: root/res/effectlib/defaultMaterialFresnel.glsllib
diff options
context:
space:
mode:
Diffstat (limited to 'res/effectlib/defaultMaterialFresnel.glsllib')
-rw-r--r--res/effectlib/defaultMaterialFresnel.glsllib15
1 files changed, 15 insertions, 0 deletions
diff --git a/res/effectlib/defaultMaterialFresnel.glsllib b/res/effectlib/defaultMaterialFresnel.glsllib
new file mode 100644
index 0000000..0d474bc
--- /dev/null
+++ b/res/effectlib/defaultMaterialFresnel.glsllib
@@ -0,0 +1,15 @@
+#ifndef DEFAULT_MATERIAL_FRESNEL_GLSLLIB
+#define DEFAULT_MATERIAL_FRESNEL_GLSLLIB
+
+float defaultMaterialSimpleFresnel( in vec3 N, in vec3 viewDir, in float ior, float fresnelPower )
+{
+ float F = ((1.0-ior) * (1.0-ior)) / ((1.0+ior) * (1.0+ior));
+ float VdotN = dot(viewDir, N);
+ float dvn = abs( dFdx(VdotN) * dFdy(VdotN) );
+ VdotN = clamp( VdotN, 0.0, 1.0 );
+ float ratio = F + (1.0 - F) * pow(1.0 - VdotN, fresnelPower);
+
+ return clamp( ratio * pow( VdotN, dvn * fresnelPower ), 0.0, 1.0 );
+}
+
+#endif