5

こんにちは、仲間のプログラマーです。私は、シャドウ マッピングを改善する上で、さらに別の障害を発見しました。問題は、私がいくつかのシャドウ マッピングを行っていることであり、適切な深度バイアスが見つからないということです。少し前に XNA プロジェクトで初めて行ったとき、地形に非常にうまく設定でき、適切なバイアスをすぐに見つけることができました。影ニキビ 影がきれいに見えるようになるまでバイアスを調整していました。これが、理解できる限りの基本的な考え方です。これが私の目指す結果です。次に DirectX 11 に移行し、後で小さなシーンをセットアップし、PCF シャドウ マッピングを実行しました。次に、バイアスを設定しないと、このようなにきびはありませんでしたが、影は次のように切断されました(醜いテクスチャで申し訳ありません):切り離された影 地面にへこみがあるはずで、箱の影が箱の縁につながっているはずなのに、途切れている。バイアスを (マイナスに) 下げると、ギャップが減少し始めますが、すぐにシャドウ マップ全体が暗くなり、最適なギャップ距離に到達します。

XNA と同じシェーダー コード (pcf フィルタリングによってのみ拡張) を使用しているため、API との関係がより深いと想定しています。xna コードをチェックアウトすると、render-to テクスチャ フォーマットが非表示になっているため (おそらく) わかりません。

誰かが以前にこの問題を抱えたことがある場合は、バイアスなしで影のにきびを達成するのを手伝ってください.

更新: この画像は、平らなクワッドの不均一なシャドウイングを示しています (アクネは、XNA の地形上にあるため、クワッド全体で均一である必要があります)。 むらのあるにきび

更新 2: カリング モードを切り替えて、デプス レンダー パス中に正面を向いている面をカリングしてみました。これにより、バイアスが変更された場合に暗くなる床がレンダリングされないため、影を少し調整できますが、影はまだ残っています。非常に不均一です。個々のメッシュの影は見栄えがよくなるように調整できますが、そうすると他のメッシュが台無しになります。 個人がよく見える ファープレーンに近いオブジェクトほど良い結果が得られるため、どういうわけか、深度バッファーの分布は非常に不均一だと思います。クリッピング距離も悪くないと思います。Shadow Projection は 1 ~ 2000 の深度分布に設定されています (私のシーンでは、1 メートルは約 200 単位です) が、どういうわけか精度がかなり低くなります。R32_FLOAT と D24_S8_UNORM の深度テクスチャ フォーマットを試しました。

4

2 に答える 2

2

「SlopeScaledDepthBias」プロパティを適切に設定しないと、同様の問題が発生します (これも D3D11_RASTERIZER_DESC の一部です)。

hereで説明されているように、SlopeScaledDepthBias は深度バイアス計算の重要な部分です。意味のある値に初期化されていることを確認してください。

于 2013-07-19T16:42:01.233 に答える
2

OK、スロープ スケーリング バイアスはセルフ シャドウイング アクネの解決策ですが、私の問題に対する正しい解決策ではありませんでした。ビューポートの設定に問題があることがわかりました。この間ずっと、深度の説明を 0.1f 近くの深度と 1.0f 遠い深度に記入しました。これは、それが何のためにあるのか正確にはわからず、問題なく動作したためです。目と精度をさらに失う。シャドウ マップ レンダリング深度ステンシル ビューのビューポート記述をニア プレーンで 0.0f に変更したところ、最終的に機能したため、以前の XNA と同様に、シーン全体で深度情報が均等に取得されるようになりました。

于 2013-07-27T10:43:33.570 に答える