I am getting bright lines appearing within the shadow area when using shadow mapping (as you can see in the shadowed part of the wall below)
I am using plain shadow mapping using sampler2DShadow. This is my shader:
// vertex shader
uniform mediump vec4 uvOffset;
uniform lowp vec3 lightDirection;
uniform highp mat4 matrixPVM;
uniform highp mat3 matrixVM;
uniform highp mat4 matrixTexProjM;
attribute lowp vec3 inNorm;
attribute highp vec3 inVertex;
attribute mediump vec2 texCoordAttr;
varying lowp vec3 normal;
varying lowp float diffuseLight;
varying mediump vec2 texCoordVar;
varying highp vec4 shadowCoord;
void main(void)
{
lowp vec3 normal = normalize(matrixVM * inNorm);
diffuseLight = max(dot(normal, lightDirection), 0.0)*1.5;
gl_Position = matrixPVM * vec4(inVertex, 1.0);
shadowCoord = matrixTexProjM * vec4(inVertex, 1.0);
texCoordVar = (texCoordAttr.xy * uvOffset.zw) + uvOffset.xy;
}
// fragement shader
uniform sampler2DShadow sShadow;
uniform sampler2D sampler2d;
uniform lowp float ambientLight;
varying mediump vec2 texCoordVar;
varying lowp float diffuseLight;
varying highp vec4 shadowCoord;
uniform lowp vec4 color1;
void main(void)
{
lowp float shadow = shadow2DProj(sShadow, shadowCoord).r;
lowp float shadowApply = shadow;
if (diffuseLight < 0.2)
{
shadowApply = 0.6;
}
lowp float light;
light = diffuseLight + ambientLight;
if (shadow < 1.0)
{
light *= 0.8;
}
shadowApply = 1.0 - ((1.0 - shadowApply) * 0.8);
light = light * shadowApply;
lowp vec4 texColor = texture2D(sampler2d, texCoordVar).rgba;
lowp vec3 color = texColor.rgb * light;
gl_FragColor = vec4(color*color1.rgb, color1.a*texColor.a);
}
Does anyone have any idea what might be the problem and how to resolve it? Many thanks for any answers.