|
@@ -59,6 +59,8 @@
|
|
|
|
|
|
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
|
|
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
|
|
|
|
|
|
|
|
+ float shadow = 1.0;
|
|
|
|
+
|
|
shadowCoord.xyz /= shadowCoord.w;
|
|
shadowCoord.xyz /= shadowCoord.w;
|
|
shadowCoord.z += shadowBias;
|
|
shadowCoord.z += shadowBias;
|
|
|
|
|
|
@@ -83,7 +85,7 @@
|
|
float dx1 = + texelSize.x * shadowRadius;
|
|
float dx1 = + texelSize.x * shadowRadius;
|
|
float dy1 = + texelSize.y * shadowRadius;
|
|
float dy1 = + texelSize.y * shadowRadius;
|
|
|
|
|
|
- return (
|
|
|
|
|
|
+ shadow = (
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
|
|
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
|
|
@@ -104,7 +106,7 @@
|
|
float dx1 = + texelSize.x * shadowRadius;
|
|
float dx1 = + texelSize.x * shadowRadius;
|
|
float dy1 = + texelSize.y * shadowRadius;
|
|
float dy1 = + texelSize.y * shadowRadius;
|
|
|
|
|
|
- return (
|
|
|
|
|
|
+ shadow = (
|
|
texture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
|
|
texture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
|
|
texture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
|
|
texture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
|
|
texture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
|
|
texture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
|
|
@@ -118,13 +120,13 @@
|
|
|
|
|
|
#else // no percentage-closer filtering:
|
|
#else // no percentage-closer filtering:
|
|
|
|
|
|
- return texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
|
|
|
|
|
|
+ shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- return 1.0;
|
|
|
|
|
|
+ return shadow;
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|