1

OpenGL でシャドウ マッピングを実装しようとしています。機能していますが、エイリアシングが表示されるため、sampler2Dshadow を shadow2D で使用することにしました。単純なアンチエイリアシング ソリューションとして機能することを読んだからです。しかし、私がそれを使用するとすぐに、シーン全体で非常に重大な影ニキビが発生します. sampler2D を texture2D で使用する場合、何もないことに注意してください。これは意図したものですか?もしそうなら、どうすれば解決できますか?

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);
4

1 に答える 1