+++ /dev/null
-uniform sampler2DShadow shadowMap ;
-
-// This define the value to move one pixel left or right
-uniform vec2 pixelOffset = vec2(1.0 / 1024.0, 1.0 / 1024.0);
-uniform sampler2D tex0;
-varying vec2 texCoord;
-
-varying vec4 ShadowCoord;
-
-
-float lookup( vec2 offSet)
-{
- // Values are multiplied by ShadowCoord.w because shadow2DProj does a W division for us.
- return shadow2DProj(shadowMap,
- ShadowCoord + vec4(
- offSet.x * pixelOffset.x * ShadowCoord.w,
- offSet.y * pixelOffset.y * ShadowCoord.w,
- 0.05, 0.0) ).w;
-}
-
-void main()
-{
- // Used to lower moiré pattern and self-shadowing
- //shadowCoordinateWdivide.z += ;
-
- float shadow = 0.0;
-
- // Avoid counter shadow
- if (ShadowCoord.w > 1.0) {
- // Simple lookup, no PCF
- //shadow = lookup(vec2(0.0,0.0));
-
- // 8x8 kernel PCF
- /*
- float x,y;
- for (y = -3.5 ; y <=3.5 ; y+=1.0)
- for (x = -3.5 ; x <=3.5 ; x+=1.0)
- shadow += lookup(vec2(x,y));
- shadow /= 64.0 ;
- */
-
- // 8x8 PCF wide kernel (step is 10 instead of 1)
- /*
- float x,y;
- for (y = -30.5 ; y <=30.5 ; y+=10.0)
- for (x = -30.5 ; x <=30.5 ; x+=10.0)
- shadow += lookup(vec2(x,y));
- shadow /= 64.0 ;
- */
-
- // 4x4 kernel PCF
- /*
- float x,y;
- for (y = -1.5 ; y <=1.5 ; y+=1.0)
- for (x = -1.5 ; x <=1.5 ; x+=1.0)
- shadow += lookup(vec2(x,y));
- shadow /= 16.0 ;
- */
- // 4x4 PCF wide kernel (step is 10 instead of 1)
-
- float x,y;
- for (y = -10.5 ; y <=10.5 ; y+=10.0)
- for (x = -10.5 ; x <=10.5 ; x+=10.0)
- shadow += lookup(vec2(x,y));
- shadow /= 16.0 ;
-
-
- // 4x4 PCF dithered
- /*
- // use modulo to vary the sample pattern
- vec2 o = mod(floor(gl_FragCoord.xy), 2.0);
-
- shadow += lookup(vec2(-1.5, 1.5) + o);
- shadow += lookup(vec2( 0.5, 1.5) + o);
- shadow += lookup(vec2(-1.5, -0.5) + o);
- shadow += lookup(vec2( 0.5, -0.5) + o);
- shadow *= 0.25 ;
- */
- }
- vec4 c = (shadow + 0.0) * gl_Color;
- gl_FragColor = mix(texture2D(tex0, texCoord), vec4(0.0,0.0,0.0,0.9), 0.8-shadow);
-}