OpenGL でシャドウ マッピングを実装しようとしています。機能していますが、エイリアシングが表示されるため、sampler2Dshadow を shadow2D で使用することにしました。単純なアンチエイリアシング ソリューションとして機能することを読んだからです。しかし、私がそれを使用するとすぐに、シーン全体で非常に重大な影ニキビが発生します. sampler2D を texture2D で使用する場合、何もないことに注意してください。これは意図したものですか?もしそうなら、どうすれば解決できますか?
sampler2DShadow を使用すると、次のようになります。
これは、シャドウを処理するフラグメント シェーダーの一部です。
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);