許容できる品質のシャドウマッピングテクニックの検索


8

最近、従来のシャドウマッピングのシャドウニキビ問題の解決を模索しながら、指数シャドウマップを実装しました。トリックはありましたが(ニキビはまったくありません)、同時に他の許容できないエラーが発生しました。

深度マップのぼかしには、最小のsigma = 1のガウスぼかしを使用します。

シャドウマップのテスト:

float occluder = texture(shadowMap lightCoords.xy).r;
float c = 5000.0;
float receiver = lightCoords.z;
float shadow = exp(c*(occluder-receiver));
shadow = clamp(shadow, 0.0, 1.0);

小さなc係数c=100.0

ここに画像の説明を入力してください

許容できない光のにじみ

高いc係数でc=5000.0

ここに画像の説明を入力してください

光のにじみはありませんが、高周波の細部が「腫れ」ているように見えます。

最適なcを見つけることができません-でも光のにじみが現れc=3000.0、高周波のシャドウエラーが既に発生しています。デプスマップをぼかすことは役立ちませんが、エイリアシングが発生します。

そして私の質問は、このテクニック(ESM)をどのように改善できるか、または別のテクニックを探す必要があるかどうかです。ウィッチャー3やフォールアウト4などの最新のゲームで見られるように、優れたパフォーマンスを備えた高品質のシャドウは間違いなく可能だと思います。

回答:


2

気にしないで。私はいくつかの研究を行い、実際に行くつもりです:

  • PCF方式でポアソンサンプリングを使用してESMをサンプリングし(優れたポアソンサンプルジェネレーターアプリについてBart Wronskiに感謝)、これをPCSS手法(可変半影)に拡張します。テクスチャにレンダリングします。
  • 必要に応じて、深さを認識してぼかしを柔らかくする-EDITがあまり速くない場合、このオプションは期待どおりに機能しません。代わりに、PCFカーネルを回転させても問題なく動作するようです。

そして、ここでの議論はそれほどでもない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.