| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #ifdef LIGHT{X}
- #if defined(SHADOWONLY) || (defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X}) && defined(LIGHTMAPNOSPECULAR{X}))
- //No light calculation
- #else
- #ifdef PBR
- #ifdef SPOTLIGHT{X}
- info = computeSpotLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDirection, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, roughness, NdotV, specularEnvironmentR0, specularEnvironmentR90, NdotL);
- #endif
- #ifdef HEMILIGHT{X}
- info = computeHemisphericLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightGround, roughness, NdotV, specularEnvironmentR0, specularEnvironmentR90, NdotL);
- #endif
- #if defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})
- info = computeLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, roughness, NdotV, specularEnvironmentR0, specularEnvironmentR90, NdotL);
- #endif
- #else
- #ifdef SPOTLIGHT{X}
- info = computeSpotLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDirection, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, glossiness);
- #endif
- #ifdef HEMILIGHT{X}
- info = computeHemisphericLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightGround, glossiness);
- #endif
- #if defined(POINTLIGHT{X}) || defined(DIRLIGHT{X})
- info = computeLighting(viewDirectionW, normalW, light{X}.vLightData, light{X}.vLightDiffuse.rgb, light{X}.vLightSpecular, light{X}.vLightDiffuse.a, glossiness);
- #endif
- #endif
- #ifdef PROJECTEDLIGHTTEXTURE{X}
- info = computeProjectionTexture(info,projectionLightSampler{X},textureProjectionMatrix{X});
- #endif
- #endif
- #ifdef SHADOW{X}
- #ifdef SHADOWCLOSEESM{X}
- #if defined(SHADOWCUBE{X})
- shadow = computeShadowWithCloseESMCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z, light{X}.depthValues);
- #else
- shadow = computeShadowWithCloseESM(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z, light{X}.shadowsInfo.w);
- #endif
- #else
- #ifdef SHADOWESM{X}
- #if defined(SHADOWCUBE{X})
- shadow = computeShadowWithESMCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z, light{X}.depthValues);
- #else
- shadow = computeShadowWithESM(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.z, light{X}.shadowsInfo.w);
- #endif
- #else
- #ifdef SHADOWPCF{X}
- #if defined(SHADOWCUBE{X})
- shadow = computeShadowWithPCFCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.y, light{X}.shadowsInfo.x, light{X}.depthValues);
- #else
- shadow = computeShadowWithPCF(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.y, light{X}.shadowsInfo.x, light{X}.shadowsInfo.w);
- #endif
- #else
- #if defined(SHADOWCUBE{X})
- shadow = computeShadowCube(light{X}.vLightData.xyz, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.depthValues);
- #else
- shadow = computeShadow(vPositionFromLight{X}, vDepthMetric{X}, shadowSampler{X}, light{X}.shadowsInfo.x, light{X}.shadowsInfo.w);
- #endif
- #endif
- #endif
- #endif
- #ifdef SHADOWONLY
- #ifndef SHADOWINUSE
- #define SHADOWINUSE
- #endif
- globalShadow += shadow;
- shadowLightCount += 1.0;
- #endif
- #else
- shadow = 1.;
- #endif
- #ifndef SHADOWONLY
- #ifdef CUSTOMUSERLIGHTING
- diffuseBase += computeCustomDiffuseLighting(info, diffuseBase, shadow);
- #ifdef SPECULARTERM
- specularBase += computeCustomSpecularLighting(info, specularBase, shadow);
- #endif
- #elif defined(LIGHTMAP) && defined(LIGHTMAPEXCLUDED{X})
- diffuseBase += lightmapColor * shadow;
- #ifdef SPECULARTERM
- #ifndef LIGHTMAPNOSPECULAR{X}
- specularBase += info.specular * shadow * lightmapColor;
- #endif
- #endif
- #else
- diffuseBase += info.diffuse * shadow;
- #ifdef SPECULARTERM
- specularBase += info.specular * shadow;
- #endif
- #endif
- #endif
- #endif
|