fSchlick top-level property

dynamic fSchlick
getter/setter pair

Implementation

var fSchlick = shaderNode((inputs) {
  var f0 = inputs.f0;
  var f90 = inputs.f90;
  var dotVH = inputs.dotVH;

  // Original approximation by Christophe Schlick '94
  // float fresnel = pow( 1.0 - dotVH, 5.0 );

  // Optimized variant (presented by Epic at SIGGRAPH '13)
  // https://cdn2.unrealengine.com/Resources/files/2013SiggraphPresentationsNotes-26915738.pdf
  var fresnel = exp2(mul(sub(mul(-5.55473, dotVH), 6.98316), dotVH));

  return add(mul(f0, sub(1.0, fresnel)), mul(f90, fresnel));
});