現在、遅延レンダリング システムのセットアップがあり、ポイント ライトとディレクショナル ライトをレンダリングできます。私の質問は、ディファード シェーディング セットアップを利用できるポイント ライトとディレクショナル ライトに基づいてシャドウを作成できるさまざまな形式のシャドウイングのオプションは何ですか?
1 に答える
独自のシャドウイング手法を必要とする遅延レンダリングについて、特別なことは何もありません。影を生成するための標準的なアプローチのほとんどは、遅延レンダリング スキームで問題なく機能します。
シャドウ マッピングは、ゲームなどのリアルタイム アプリケーションで現在使用されている最も一般的なシャドウイング アルゴリズムです。ステンシル シャドウは数年前に人気がありましたが、さまざまな制限により、少し人気がなくなりました。シャドウ マッピングはディファード シェーディングで正常に機能します。シャドウ マッピングの基本的なアルゴリズムは、かなり単純です。
- ライトの視点からレンダー ターゲット テクスチャに深度をレンダリングします (ポイント ライトのキューブ マップの 6 つの面をレンダリングする必要があります)。
- ライトのライティング パスを実行するときは、ピクセルごとにワールド空間の位置をライトのビュー空間に変換し、深度をシャドウ マップに格納されている深度と比較します。シャドウ マップの深度よりも大きい場合、ポイントは影にあり、それ以外の場合は通常どおりに照らされます。
レンダリングではいつものように、悪魔は細部に宿ります。高品質のシャドウを得るには、シャドウ マップで使用可能なピクセルを最大限に活用するようにシャドウ マップ プロジェクションを慎重に設定する必要があります (パースペクティブ シャドウ マップ、カスケード シャドウ マップを検索してください)。精度の問題により、セルフ シャドウ サーフェスでさまざまなアーティファクトが発生し (「シャドウ アクネ」が最も一般的なものです)、これらのアーティファクトの発生を減らすためのさまざまな戦略があります (深度バイアス、射影行列の微調整)。解像度が不十分なシャドウ マップのブロック状でピクセル化された外観を減らすために、おそらくシャドウ マップ フィルタリングを実行する必要があります。Percentage Closer Filtering は標準的なアプローチであり、PCF の実行にはさまざまな方法があります。
また、シャドウを使用すると、標準的な品質とパフォーマンスのトレードオフに直面し、ダイナミック シャドウイングは、シーン レンダリングの最もコストのかかる側面の 1 つになる傾向があります。シャドウ マッピングのパフォーマンスを最大化するためのさまざまなトリックとテクニックがあります。
最近、基本的なシャドウ マッピング アルゴリズムに多くのバリエーションがあり、フィルタリングの問題に別の方法でアプローチすることで、特定のシャドウ マップ解像度に対して見栄えの良い結果を得ようとしています。Variance Shadow Maps と Exponential Shadow Maps は最近の 2 つの手法で、いくつかの利点がありますが、独自の問題もあります。
Nvidia の開発者サイトは、一般的なグラフィックス プログラミングの優れたリソースであり、シャドーイングに関する記事がたくさんあります。GPU Gems ブックの HTML バージョンもサイトで入手できます。GPU Gems 3 のバリアンス シャドウ マップに関する決定的な記事など、シャドウイングに関するさまざまな記事があります。