UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

3 lines (2 loc) 1.34 kB
declare const _default: "\n\n#if LIT_OCCLUDE_SPECULAR != NONE\n #ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n uniform material_occludeSpecularIntensity: f32;\n #endif\n#endif\n\nfn occludeSpecular(gloss: f32, ao: f32, worldNormal: vec3f, viewDir: vec3f) {\n\n #if LIT_OCCLUDE_SPECULAR == AO\n #ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n var specOcc: f32 = mix(1.0, ao, uniform.material_occludeSpecularIntensity);\n #else\n var specOcc: f32 = ao;\n #endif\n #endif\n\n #if LIT_OCCLUDE_SPECULAR == GLOSSDEPENDENT\n\n // approximated specular occlusion from AO\n // http://research.tri-ace.com/Data/cedec2011_RealtimePBR_Implementation_e.pptx\n var specPow: f32 = exp2(gloss * 11.0);\n var specOcc: f32 = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01 * specPow) - 1.0 + ao);\n\n #ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n specOcc = mix(1.0, specOcc, uniform.material_occludeSpecularIntensity);\n #endif\n #endif\n\n #if LIT_OCCLUDE_SPECULAR != NONE\n dSpecularLight = dSpecularLight * specOcc;\n dReflection = dReflection * specOcc;\n\n #ifdef LIT_SHEEN\n sSpecularLight = sSpecularLight * specOcc;\n sReflection = sReflection * specOcc;\n #endif\n #endif\n}\n"; export default _default;