使用shadow2D时Opengl阴影痤疮

时间:2013-10-22 11:25:14

标签: opengl glsl

我正在尝试在opengl中实现阴影贴图。它工作正常,但是别名是可见的,所以我决定使用sampler2Dshadow和shadow2D,因为我已经读过它作为简单的抗锯齿解决方案。但是一旦我使用它,它会在整个场景中产生非常显着的阴影痤疮。请注意,当使用带有texture2D的sampler2D时,没有。 这是有意的吗?如果是这样,我该如何解决呢?

这是使用sampler2DShadow时的外观: 1

这是处理阴影的片段着色器的一部分:

    float theta = clamp(dot(normalize(lightVector), normalize(vertNormal)), 0, 1);
    float bias = 0.005*tan(acos(theta));
    float visibility = 1.0;
    if ( shadow2D(shadowTex, shadowCoord).z < shadowCoord.z - bias){
        visibility = 0.5;
    }
    color = vec4(color.xyz * visibility, 1);

0 个答案:

没有答案