@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
19 lines (15 loc) • 570 B
JavaScript
var aoSpecOccConstPS = /* glsl */`
void occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {
// approximated specular occlusion from AO
float specPow = exp2(gloss * 11.0);
// http://research.tri-ace.com/Data/cedec2011_RealtimePBR_Implementation_e.pptx
float specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01*specPow) - 1.0 + ao);
dSpecularLight *= specOcc;
dReflection *= specOcc;
sSpecularLight *= specOcc;
sReflection *= specOcc;
}
`;
export { aoSpecOccConstPS as default };