playcanvas
Version:
PlayCanvas WebGL game engine
29 lines (25 loc) • 799 B
JavaScript
var fresnelSchlickPS = /* wgsl */ `
// Schlick's approximation
fn getFresnel(
cosTheta: f32,
gloss: f32,
specularity: vec3f
#if defined(LIT_IRIDESCENCE)
, iridescenceFresnel: vec3f,
iridescenceIntensity: f32
#endif
) -> vec3f {
let fresnel: f32 = pow(1.0 - saturate(cosTheta), 5.0);
let glossSq: f32 = gloss * gloss;
let ret: vec3f = specularity + (max(vec3f(glossSq), specularity) - specularity) * fresnel;
#if defined(LIT_IRIDESCENCE)
return mix(ret, iridescenceFresnel, iridescenceIntensity);
#else
return ret;
#endif
}
fn getFresnelCC(cosTheta: f32) -> f32 {
let fresnel: f32 = pow(1.0 - saturate(cosTheta), 5.0);
return 0.04 + (1.0 - 0.04) * fresnel;
}`;
export { fresnelSchlickPS as default };