私はゲームの分散シャドウマッピングの実装に取り組んでいます。エイリアスマップを適用するためにガウスぼかしをシャドウマップに適用して、分散シャドウマッピングでスポットライトを機能させることができました。現在、ポイントライトを実装しようとしていますが、キューブマップに格納されているシャドウマップで動作するようにガウスぼかしを適応させる方法がわかりません。しばらく探してみましたが、ポイントライトを使用した例を見つけることができません。誰かがここで私を手伝ってくれる?
私はゲームの分散シャドウマッピングの実装に取り組んでいます。エイリアスマップを適用するためにガウスぼかしをシャドウマップに適用して、分散シャドウマッピングでスポットライトを機能させることができました。現在、ポイントライトを実装しようとしていますが、キューブマップに格納されているシャドウマップで動作するようにガウスぼかしを適応させる方法がわかりません。しばらく探してみましたが、ポイントライトを使用した例を見つけることができません。誰かがここで私を手伝ってくれる?
回答:
ポイントライトを使用して分散シャドウマッピングを行う方法の例がありますが、キューブマッピングの代わりに二重放物面マッピングを使用しています。例付きのチュートリアルをここに示します。
キューブマップよりも少し詳細に対処する場合は、DP分散シャドウマッピングの方がコーディングが簡単であり、6つではなく2つのテクスチャを必要とするため、メモリを節約できます。また、非表示にする継ぎ目は1つだけです。
ポイントライトは通常、シャドウマッピングを適用するのに最も難しい種類のライトであり、メモリをより多く消費します。そのため、多くのゲームではポイントライトをあまり使用しません。
これを以前に実装したときは、標準の2Dガウスぼかしを使用して、各キューブ面を個別にぼかしました。ぼかしがそれらを越えないので、潜在的にキューブのエッジにシームを導入することができますが、私の経験では、これはほとんど気づかれませんでした。もちろんYMMV。
キューブマップの形式で入力を取得するブラーシェーダーを記述し、方向の円錐をサンプリングしてサンプルを3Dベクトルの周りに分散させることにより、キューブのエッジを横切ってブラーを行うこともできます。それはトリッキーで遅いように聞こえるので、私は最初に各顔を個別にぼかしてみます。