シャドウマッピングのしくみはわかっていますが、シャドウニキビの原因がわかりません。誰でも簡単にシャドウニキビの原因を教えてもらえますか?それはデプスマップの解像度とどのように関連していますか?
シャドウマッピングのしくみはわかっていますが、シャドウニキビの原因がわかりません。誰でも簡単にシャドウニキビの原因を教えてもらえますか?それはデプスマップの解像度とどのように関連していますか?
回答:
画像1:にきびの悪いケース。(合成で、少し誇張されています)
にきびは、シャドウマップの離散的な性質によって引き起こされます。シャドウマップはサンプルで構成され、サーフェスは連続しています。したがって、離散した表面がサンプルよりも遠い表面にスポットが存在する可能性があります。マルチサンプリングを行っても問題は解決しませんが、かなりのコストでこれをほぼ排除できる方法でよりスマートにサンプリングできます。
画像2:シャドウ関数とその離散サンプルの側面断面図。
これを解決する標準的な方法は、シャドウマップをわずかにオフセットして、オブジェクトが自分自身をシャドウイングしないようにすることです。このオフセットはバイアスと呼ばれます。固定値よりも多くのスマートオフセットを使用できますが、固定値は非常に適切に機能し、オーバーヘッドは最小限です。
画像3:前方にバイアスされた(オフセット)シャドウ関数。
joojaaの答えへの追加として:バイアスを使用してシャドウ関数をオフセットすると、実際にシャドウニキビの問題が解決されますが、追加の問題が発生する可能性があります。Peter Panning
左の写真に見られるように、影は影付け壁から切り離されています。これは、ジオメトリが地面の上に浮かんでいるような印象を与えます(ピーターパンがホバリングできるように、ピーターパンニングという名前です)。
この問題を解決するには、ボリュームを持つ「厚い」ジオメトリを使用して、背面を使用してシャドウマップをレンダリングする必要があります。オフセットがジオメトリの厚さよりも小さい場合、Peter Panningはありません。
両方の画像は、このチュートリアルから取得されたもので、シャドウマッピングのしくみ、シャドウニキビの作成と解決の方法、およびピーターパンニングについても学ぶことができます。