UNPKG

playcanvas

Version:

PlayCanvas WebGL game engine

47 lines (45 loc) 1.25 kB
var lightmapAddPS = ` fn addLightMap( lightmap: vec3f, dir: vec3f, worldNormal: vec3f, viewDir: vec3f, reflectionDir: vec3f, gloss: f32, specularity: vec3f, vertexNormal: vec3f, tbn: mat3x3f #if defined(LIT_IRIDESCENCE) , iridescenceFresnel: vec3f, iridescenceIntensity: f32 #endif ) { #if defined(LIT_SPECULAR) && defined(LIT_DIR_LIGHTMAP) if (dot(dir, dir) < 0.0001) { dDiffuseLight = dDiffuseLight + lightmap; } else { let vlight: f32 = saturate(dot(dir, -vertexNormal)); let flight: f32 = saturate(dot(dir, -worldNormal)); let nlight: f32 = (flight / max(vlight, 0.01)) * 0.5; dDiffuseLight = dDiffuseLight + lightmap * nlight * 2.0; let halfDir: vec3f = normalize(-dir + viewDir); var specularLight: vec3f = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn); #ifdef LIT_SPECULAR_FRESNEL specularLight = specularLight * getFresnel(dot(viewDir, halfDir), gloss, specularity #if defined(LIT_IRIDESCENCE) , iridescenceFresnel, iridescenceIntensity #endif ); #endif dSpecularLight = dSpecularLight + specularLight; } #else dDiffuseLight = dDiffuseLight + lightmap; #endif } `; export { lightmapAddPS as default };