UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

58 lines (46 loc) 1.51 kB
var lightmapAddPS = /* glsl */ ` void addLightMap( vec3 lightmap, vec3 dir, vec3 worldNormal, vec3 viewDir, vec3 reflectionDir, float gloss, vec3 specularity, vec3 vertexNormal, mat3 tbn #if defined(LIT_IRIDESCENCE) vec3 iridescenceFresnel, float iridescenceIntensity #endif ) { // directional lightmap #if defined(LIT_SPECULAR) && defined(LIT_DIR_LIGHTMAP) if (dot(dir, dir) < 0.0001) { dDiffuseLight += lightmap; } else { float vlight = saturate(dot(dir, -vertexNormal)); float flight = saturate(dot(dir, -worldNormal)); float nlight = (flight / max(vlight, 0.01)) * 0.5; dDiffuseLight += lightmap * nlight * 2.0; vec3 halfDir = normalize(-dir + viewDir); vec3 specularLight = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn); #ifdef LIT_SPECULAR_FRESNEL specularLight *= getFresnel(dot(viewDir, halfDir), gloss, specularity #if defined(LIT_IRIDESCENCE) , iridescenceFresnel, iridescenceIntensity #endif ); #endif dSpecularLight += specularLight; } #else // non-directional lightmap dDiffuseLight += lightmap; #endif } `; export { lightmapAddPS as default };