こんにちは、仲間のプログラマーです。私は、シャドウ マッピングを改善する上で、さらに別の障害を発見しました。問題は、私がいくつかのシャドウ マッピングを行っていることであり、適切な深度バイアスが見つからないということです。少し前に XNA プロジェクトで初めて行ったとき、地形に非常にうまく設定でき、適切なバイアスをすぐに見つけることができました。
影がきれいに見えるようになるまでバイアスを調整していました。これが、理解できる限りの基本的な考え方です。これが私の目指す結果です。次に DirectX 11 に移行し、後で小さなシーンをセットアップし、PCF シャドウ マッピングを実行しました。次に、バイアスを設定しないと、このようなにきびはありませんでしたが、影は次のように切断されました(醜いテクスチャで申し訳ありません):
地面にへこみがあるはずで、箱の影が箱の縁につながっているはずなのに、途切れている。バイアスを (マイナスに) 下げると、ギャップが減少し始めますが、すぐにシャドウ マップ全体が暗くなり、最適なギャップ距離に到達します。
XNA と同じシェーダー コード (pcf フィルタリングによってのみ拡張) を使用しているため、API との関係がより深いと想定しています。xna コードをチェックアウトすると、render-to テクスチャ フォーマットが非表示になっているため (おそらく) わかりません。
誰かが以前にこの問題を抱えたことがある場合は、バイアスなしで影のにきびを達成するのを手伝ってください.
更新: この画像は、平らなクワッドの不均一なシャドウイングを示しています (アクネは、XNA の地形上にあるため、クワッド全体で均一である必要があります)。
更新 2: カリング モードを切り替えて、デプス レンダー パス中に正面を向いている面をカリングしてみました。これにより、バイアスが変更された場合に暗くなる床がレンダリングされないため、影を少し調整できますが、影はまだ残っています。非常に不均一です。個々のメッシュの影は見栄えがよくなるように調整できますが、そうすると他のメッシュが台無しになります。
ファープレーンに近いオブジェクトほど良い結果が得られるため、どういうわけか、深度バッファーの分布は非常に不均一だと思います。クリッピング距離も悪くないと思います。Shadow Projection は 1 ~ 2000 の深度分布に設定されています (私のシーンでは、1 メートルは約 200 単位です) が、どういうわけか精度がかなり低くなります。R32_FLOAT と D24_S8_UNORM の深度テクスチャ フォーマットを試しました。