12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // Do not edit.
- import { ShaderStore } from "../../Engines/shaderStore.js";
- const name = "pbrDirectLightingFalloffFunctions";
- const shader = `float computeDistanceLightFalloff_Standard(vec3 lightOffset,float range)
- {return max(0.,1.0-length(lightOffset)/range);}
- float computeDistanceLightFalloff_Physical(float lightDistanceSquared)
- {return 1.0/maxEps(lightDistanceSquared);}
- float computeDistanceLightFalloff_GLTF(float lightDistanceSquared,float inverseSquaredRange)
- {float lightDistanceFalloff=1.0/maxEps(lightDistanceSquared);float factor=lightDistanceSquared*inverseSquaredRange;float attenuation=saturate(1.0-factor*factor);attenuation*=attenuation;lightDistanceFalloff*=attenuation;return lightDistanceFalloff;}
- float computeDistanceLightFalloff(vec3 lightOffset,float lightDistanceSquared,float range,float inverseSquaredRange)
- {
- #ifdef USEPHYSICALLIGHTFALLOFF
- return computeDistanceLightFalloff_Physical(lightDistanceSquared);
- #elif defined(USEGLTFLIGHTFALLOFF)
- return computeDistanceLightFalloff_GLTF(lightDistanceSquared,inverseSquaredRange);
- #else
- return computeDistanceLightFalloff_Standard(lightOffset,range);
- #endif
- }
- float computeDirectionalLightFalloff_Standard(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent)
- {float falloff=0.0;float cosAngle=maxEps(dot(-lightDirection,directionToLightCenterW));if (cosAngle>=cosHalfAngle)
- {falloff=max(0.,pow(cosAngle,exponent));}
- return falloff;}
- float computeDirectionalLightFalloff_Physical(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle)
- {const float kMinusLog2ConeAngleIntensityRatio=6.64385618977;
- float concentrationKappa=kMinusLog2ConeAngleIntensityRatio/(1.0-cosHalfAngle);vec4 lightDirectionSpreadSG=vec4(-lightDirection*concentrationKappa,-concentrationKappa);float falloff=exp2(dot(vec4(directionToLightCenterW,1.0),lightDirectionSpreadSG));return falloff;}
- float computeDirectionalLightFalloff_GLTF(vec3 lightDirection,vec3 directionToLightCenterW,float lightAngleScale,float lightAngleOffset)
- {float cd=dot(-lightDirection,directionToLightCenterW);float falloff=saturate(cd*lightAngleScale+lightAngleOffset);falloff*=falloff;return falloff;}
- float computeDirectionalLightFalloff(vec3 lightDirection,vec3 directionToLightCenterW,float cosHalfAngle,float exponent,float lightAngleScale,float lightAngleOffset)
- {
- #ifdef USEPHYSICALLIGHTFALLOFF
- return computeDirectionalLightFalloff_Physical(lightDirection,directionToLightCenterW,cosHalfAngle);
- #elif defined(USEGLTFLIGHTFALLOFF)
- return computeDirectionalLightFalloff_GLTF(lightDirection,directionToLightCenterW,lightAngleScale,lightAngleOffset);
- #else
- return computeDirectionalLightFalloff_Standard(lightDirection,directionToLightCenterW,cosHalfAngle,exponent);
- #endif
- }`;
- // Sideeffect
- ShaderStore.IncludesShadersStore[name] = shader;
- /** @internal */
- export const pbrDirectLightingFalloffFunctions = { name, shader };
- //# sourceMappingURL=pbrDirectLightingFalloffFunctions.js.map
|