62 lines
1.3 KiB
GLSL
62 lines
1.3 KiB
GLSL
float getShadowMask() {
|
|
|
|
float shadow = 1.0;
|
|
|
|
#ifdef USE_SHADOWMAP
|
|
|
|
#if NUM_DIR_LIGHTS > 0
|
|
|
|
DirectionalLight directionalLight;
|
|
|
|
#pragma unroll_loop
|
|
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
|
|
directionalLight = directionalLights[ i ];
|
|
shadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#if NUM_SPOT_LIGHTS > 0
|
|
|
|
SpotLight spotLight;
|
|
|
|
#pragma unroll_loop
|
|
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
|
|
spotLight = spotLights[ i ];
|
|
shadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
#if NUM_POINT_LIGHTS > 0
|
|
|
|
PointLight pointLight;
|
|
|
|
#pragma unroll_loop
|
|
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
|
|
pointLight = pointLights[ i ];
|
|
shadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
/*
|
|
#if NUM_RECT_AREA_LIGHTS > 0
|
|
|
|
// TODO (abelnation): update shadow for Area light
|
|
|
|
#endif
|
|
*/
|
|
|
|
#endif
|
|
|
|
return shadow;
|
|
|
|
}
|