カメラ ビューの 2 つのピクセルがシャドウ マップ上の同じ UV 上にある場合、OpenGL でシャドウ マップを使用すると問題が発生します。これがどのように見えるかです:
同じ UV の問題に関するシャドウ マップ 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;
}
ありがとう。