阴影贴图:对相同的UV进行采样

时间:2013-08-04 11:32:58

标签: opengl-es opengl-es-2.0 shader shadow shadow-mapping

当摄像机视图中的2个像素位于阴影贴图上的相同UV上时,我在使用OpenGL中的阴影贴图时遇到问题。这是这样的:

shadow map on the same UVs problem http://img7.imageshack.us/img7/4459/ida9.png

两个可见阴影都出现在相同UV的阴影贴图上,显然侧面的阴影是问题所在。有办法解决这个问题吗?

这是我的片段着色器:

float get_shadow(vec4 _shadow_coords, sampler2D _sampler){
    if(_shadow_coords.w <= 0.0) return 1.0;
    float uu = ((_shadow_coords.x / _shadow_coords.w) * 0.5) + 0.5;
    float vv = ((_shadow_coords.y / _shadow_coords.w) * 0.5) + 0.5;
    if(uu <= 0.0) return 1.0;
    if(uu > 1.0) return 1.0;
    if(vv <= 0.0) return 1.0;
    if(vv > 1.0) return 1.0;
    float zz = 0.0, zzz = 0.0;
    zz = unpack(_sampler, vec2(uu, vv));
    zzz = _shadow_coords.z / _shadow_coords.w;
    if(zz < zzz - 0.005) return min_diff;
    return 1.0;
}

感谢。

0 个答案:

没有答案