12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Do not edit.
- import { ShaderStore } from "../../Engines/shaderStore.js";
- const name = "lightsFragmentFunctions";
- const shader = `struct lightingInfo
- {vec3 diffuse;
- #ifdef SPECULARTERM
- vec3 specular;
- #endif
- #ifdef NDOTL
- float ndl;
- #endif
- };lightingInfo computeLighting(vec3 viewDirectionW,vec3 vNormal,vec4 lightData,vec3 diffuseColor,vec3 specularColor,float range,float glossiness) {lightingInfo result;vec3 lightVectorW;float attenuation=1.0;if (lightData.w==0.)
- {vec3 direction=lightData.xyz-vPositionW;attenuation=max(0.,1.0-length(direction)/range);lightVectorW=normalize(direction);}
- else
- {lightVectorW=normalize(-lightData.xyz);}
- float ndl=max(0.,dot(vNormal,lightVectorW));
- #ifdef NDOTL
- result.ndl=ndl;
- #endif
- result.diffuse=ndl*diffuseColor*attenuation;
- #ifdef SPECULARTERM
- vec3 angleW=normalize(viewDirectionW+lightVectorW);float specComp=max(0.,dot(vNormal,angleW));specComp=pow(specComp,max(1.,glossiness));result.specular=specComp*specularColor*attenuation;
- #endif
- return result;}
- lightingInfo computeSpotLighting(vec3 viewDirectionW,vec3 vNormal,vec4 lightData,vec4 lightDirection,vec3 diffuseColor,vec3 specularColor,float range,float glossiness) {lightingInfo result;vec3 direction=lightData.xyz-vPositionW;vec3 lightVectorW=normalize(direction);float attenuation=max(0.,1.0-length(direction)/range);float cosAngle=max(0.,dot(lightDirection.xyz,-lightVectorW));if (cosAngle>=lightDirection.w)
- {cosAngle=max(0.,pow(cosAngle,lightData.w));attenuation*=cosAngle;float ndl=max(0.,dot(vNormal,lightVectorW));
- #ifdef NDOTL
- result.ndl=ndl;
- #endif
- result.diffuse=ndl*diffuseColor*attenuation;
- #ifdef SPECULARTERM
- vec3 angleW=normalize(viewDirectionW+lightVectorW);float specComp=max(0.,dot(vNormal,angleW));specComp=pow(specComp,max(1.,glossiness));result.specular=specComp*specularColor*attenuation;
- #endif
- return result;}
- result.diffuse=vec3(0.);
- #ifdef SPECULARTERM
- result.specular=vec3(0.);
- #endif
- #ifdef NDOTL
- result.ndl=0.;
- #endif
- return result;}
- lightingInfo computeHemisphericLighting(vec3 viewDirectionW,vec3 vNormal,vec4 lightData,vec3 diffuseColor,vec3 specularColor,vec3 groundColor,float glossiness) {lightingInfo result;float ndl=dot(vNormal,lightData.xyz)*0.5+0.5;
- #ifdef NDOTL
- result.ndl=ndl;
- #endif
- result.diffuse=mix(groundColor,diffuseColor,ndl);
- #ifdef SPECULARTERM
- vec3 angleW=normalize(viewDirectionW+lightData.xyz);float specComp=max(0.,dot(vNormal,angleW));specComp=pow(specComp,max(1.,glossiness));result.specular=specComp*specularColor;
- #endif
- return result;}
- #define inline
- vec3 computeProjectionTextureDiffuseLighting(sampler2D projectionLightSampler,mat4 textureProjectionMatrix){vec4 strq=textureProjectionMatrix*vec4(vPositionW,1.0);strq/=strq.w;vec3 textureColor=texture2D(projectionLightSampler,strq.xy).rgb;return textureColor;}`;
- // Sideeffect
- ShaderStore.IncludesShadersStore[name] = shader;
- /** @internal */
- export const lightsFragmentFunctions = { name, shader };
- //# sourceMappingURL=lightsFragmentFunctions.js.map
|