1// $LastChangedDate: 2010-11-12 11:27:22 -0500 (Fri, 12 Nov 2010) $ 2 3 // Apply shadow. 4 if ( uni_shadowMode != SHADOW_MODE_DISABLED ) 5 { 6 float SHADOW_FACTOR = 0.3; // dark gray instead of black 7 float f; 8 9 if ( uni_shadowMode == SHADOW_MODE_SAMPLE4 ) 10 { 11 float b = 0.0015; // bias 12 vec4 i = gl_TexCoord[TEXTURE_UNIT_SHADOW]; 13 f = 0.0; 14 f += shadow2DProj( uni_texture_shadow, vec4(i.x-b, i.y-b, i.z, i.w) ).r; 15 f += shadow2DProj( uni_texture_shadow, vec4(i.x-b, i.y+b, i.z, i.w) ).r; 16 f += shadow2DProj( uni_texture_shadow, vec4(i.x+b, i.y-b, i.z, i.w) ).r; 17 f += shadow2DProj( uni_texture_shadow, vec4(i.x+b, i.y+b, i.z, i.w) ).r; 18 f *= 0.25; 19 } 20 else // SHADOW_MODE_SAMPLE1 21 { 22 f = shadow2DProj( uni_texture_shadow, gl_TexCoord[TEXTURE_UNIT_SHADOW] ).r; 23 } 24 25 f = max( SHADOW_FACTOR, f ); // dark gray instead of solid black 26 gl_FragColor.rgb *= vec3( f, f, f ); // apply shadow to color fragment 27 } 28