diff options
Diffstat (limited to 'res/effectlib/defaultMaterialFresnel.glsllib')
-rw-r--r-- | res/effectlib/defaultMaterialFresnel.glsllib | 15 |
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 |