【TA100】3.4 順方向/遅延レンダリングパイプラインの概要

1. レンダリングパス

1. レンダリングパスとは何ですか?

● 照明の実装方法を決定します。(つまり、現在のレンダリング ターゲットで使用されるライティング プロセス)

2. レンダリング方法

まず、この 2 つの直感的な違いを見てみましょう。
ここに画像の説明を挿入します

フォワードレンダリング

一言で言えば、すべての光は計算されています

1. プロセス

ここに画像の説明を挿入します
● 図に示すように、処理は、
レンダリング対象のジオメトリ → 頂点シェーダ → フラグメント シェーダ → レンダリング対象
○ 各フレームをレンダリングする際、各頂点/フラグメントはフラグメント シェーダ コードを 1 回実行する必要があり、このとき、すべての照明情報がフラグメント シェーダに転送する必要があります。
● ほとんどの場合、照明は小型化される傾向があり、照らされる領域は大きくありませんが、光源がこのピクセルに対応するワールド空間から遠く離れている場合でも、照明の計算ではすべての光源が考慮されます。
● 簡単に言うと、光源の影響が大きいかどうかに関係なく、すべての光源が計算に含まれることになり、無駄が多くなります。

2. ルール(各フレームの描画方法)と注意事項

頂点処理段階で発生し、すべての頂点のライティングを計算します。フルプラットフォームのサポート
○ ルール 1:最も明るい光源がピクセル ライティングとして実装されます
○ ルール 2: 次に、最大 4 つの光源が頂点ライティングとして実装されます
○ ルール 3:残りの光源はより高効率の球面ハマニックで実装されます模擬照明の一種です補足説明○ 最も明るい光はピクセル照明である必要があります○ライトのレンダリングモードが重要ですライトはピクセル照明である必要があります○ 前の 2 つを合計すると
ピクセル照明はピクセルよりも小さくなります品質設定の Light Count (ピクセル照明の最大数) を選択し、残りの光源から最も明るい光源を見つけてピクセル照明として実装します。○ 最後に残った光源は、ルール 2 または 3 に従います。○ ピクセル ライト、すべての頂点ライト、およびベース パスの球状調整ライトを実行し、シャドウ計算を実行します。○ 残りのピクセル ライトにはそれぞれ追加パスがあり、これらのパスでは影の計算は行われません。○ シーンに表示される影はすべて、ベース パスで計算された最も明るいピクセル ライトの影であり、他のピクセル ライトの影は計算されません。光源の最大数は変更可能○ Unityを例にプロジェクト設定にて









ここに画像の説明を挿入します
したがって、オブジェクトが n 個の光源の影響を受ける場合、各フラグメント シェーダがコードを実行するときに、計算のために n 個の光源をシェーダに渡す必要があります。
ここに画像の説明を挿入します

遅延レンダリング - 遅延レンダリング

一言で言えば、最初に照明を計算するのではなく、最後まで遅らせてから一緒に計算します。

1. 遅延レンダリングとは何ですか?

● 主に、大量のライティング レンダリングを解決するために使用されます
。 ● 遅延レンダリングの本質は次のとおりです。
○ 最初にライティングの計算のために三角形を反復するのではなく、最初に見えるすべてのピクセルを見つけてから、ライティングを反復します。
○ 三角形を直接反復すると、大量の三角形が表示されないため、大きな無駄が生じます。

2. プロセス

ここに画像の説明を挿入します
● プロセスは、レンダリングされるジオメトリ → 頂点シェーダ → MRT → ライティング計算 → レンダリング ターゲットです。
● プロセスは 2 つのパスに分割できます
。 ○ 最初のパス: ジオメトリ処理パス。
■ 最初にシーンを 1 回レンダリングし、レンダリングされるオブジェクトのさまざまな幾何学的情報をG-buffer という名前のバッファに保存します。これらのバッファは、後でより複雑な照明計算に使用されます。
■ 深度テストにより、最終的に G バッファに書き込まれるのは、カメラに最も近いフラグメントの設定された属性です。つまり、G バッファ内のフラグメントはライティング計算を受ける必要があります。
○ 2 番目のパス: ライティング処理パス。
■ このパスは、すべての G バッファ内の位置、色、法線、およびその他のパラメータを走査し、照明計算を実行します。

マルチ レンダー ターゲット (MRT) は、描画プログラムが 1 つのフレーム内で複数のレンダー ターゲットを同時にレンダリングできるようにする方法です。つまり、1 つの描画で複数のサーフェスに異なる情報を描画できます。ピクセル シェーダーを使用してポストプロセス エフェクトを実現するのは重要な部分です。各ピクセルのデータは別のバッファに保存されます。この利点は、これらのバッファ データがフォトリアリスティックな照明効果シェーダのパラメータになることができることです。
このアプローチを利用すると、すべてのジオメトリがレンダリングされた後、最後に照明を適用できるため、複数のレンダリング手順が不要になります。したがって、この手法はディファード シェーディング (Deferred Shading) とも呼ばれます。このタイプのサーフェスに保存されるデータには、位置、法線、色、およびマテリアルの情報が含まれる場合があります。

3. 注意事項

●Gバッファの概念
○Gバッファ、正式名称はGeometric Buffer、幾何学的バッファと訳され、主に位置(Position)、法線(Normal)、拡散色(Diffuse Color)等を格納するために使用されます。各ピクセルへの便利なマテリアルパラメータ。
■ この情報に基づいて、画像空間 (2 次元空間) で各ピクセルを照明できます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
○ UE4 はデフォルトで遅延パイプラインを使用します
■ 表示モード - バッファ表示 - 概要ですべての G バッファのプレビューを確認できます
ここに画像の説明を挿入します
● 遅延レンダリングは透明オブジェクトのレンダリングをサポートしていません
○ 深さ情報がないため
○ 遅延内の透明オブジェクトレンダリング レンダリング方法はフォワードレンダリングと同じです

3. さまざまなレンダリング パスの特徴

1. さまざまな後処理方法

● 後処理に深度情報が必要な場合
○ 順方向レンダリングでは別の深度マップをレンダリングする必要がある
○ 遅延レンダリングは、G バッファ内の深度情報を使用して直接計算できます。

2. さまざまなシェーディング計算 (シェーダー)

● 遅延レンダリング
○ ライティングは最後に一律に計算されるため、1 つのライティング モデルとしてのみカウントできます (他のライティング モデルが必要な場合は、パスを切り替えるだけで済みます)

3. さまざまなアンチエイリアシング方法

● 従うべき具体的な指示

4. さまざまなレンダリング パスの長所と短所

1. フォワードレンダリングのメリットとデメリット

利点
● 1. 半透明レンダリングのサポート
● 2. 複数のライティング パスの使用のサポート
● 3. カスタム ライティング計算メソッドのサポート
○ (遅延レンダリングは Gbuffer にレンダリングしてからライティングをまとめて計算するため、オブジェクトごとに個別のライティング メソッド計算をサポートしません) )
欠点
● 1. 光源の数は計算の複雑さに大きな影響を与えます
● 2. 深度などのデータにアクセスするには追加の計算が必要です (別の深度マップをレンダリングする必要があります)

2. 遅延レンダリングの長所と短所

利点
● 1. 多数の照明シーンの場合、利点は明らかです。
● 2. 可視ピクセルのみがレンダリングされ、計算が節約されます。
● 3. 後処理の優れたサポート (深度情報など: G-直接バッファします)
● 4. 使用するシェーダが少なくなります (すべてのオブジェクトの照明モデルは同じであり、定義する必要のないものが多くあります) 短所 ● 1. MSAA サポートに不向き ● 2. 透明なオブジェクトのレンダリングに問題があります (深度の問題、
のみ
)
フォース オブジェクトに最も近いオブジェクトがレンダリングされるため、透明度のレンダリングが問題を引き起こす)
● 3. 多くのビデオ メモリ帯域幅を占有します
○ クリア操作が含まれます。クリーンアップされていない場合は、後で取得できます
○ 各フレームには複数の RT が必要ですビデオ メモリ内で転送、クリーニングなどが行われるため、帯域幅がより多く消費されます。
● 4. 使用できるライティング パスは 1 つだけです。

5. その他の部品

1. レンダリングパスの設定

● プロジェクト設定で設定します
ここに画像の説明を挿入します
ここに画像の説明を挿入します

2、TBDR

● 同じ名前で内容が異なる TBDR が 2 つあります。

● 1 つ目:
○ SIGGRAPH2010 で提案されました。従来の遅延レンダリングのもう 1 つの主要な改良点として、**タイルベース遅延レンダリング (TBDR)** は、オーバーヘッドを合理的に償却することを目的としています。SIGGRAPH 2010 で提案されて以来、徐々に普及してきました。業界からも理解されてきました。
ここに画像の説明を挿入します
遅延レンダリングの最適化手法に基づいて、画像全体を多数のブロックに分割し、1 つずつレンダリングするブロック化(帯域幅とメモリの問題を解決する) によって帯域幅とメモリ使用量を削減します。

● 2 つ目:
○ 携帯電話 GPU の TBR フレームワークに基づいて PowerVR によって提案された改良、HSR によるオーバードローの削減
○ TBDR アーキテクチャは、PowerVR によって提案された TBR の改良であり、TBR をベースに Deferred が追加されています。
○ 可視性テストを実行してオーバードローを削減します
○ 携帯電話の GPU アーキテクチャに関係しており、レンダリングの遅延とは関係ありません

3. その他のレンダリング パス

1ライトプリパス/ディファードライティング

● G バッファが占有する過剰なオーバーヘッドを削減し、複数のライティング モデルをサポート
● 遅延レンダリングとの違い:
○ 使用するバッファ情報が少なく、シェーディング計算でフォワードを使用するため、3 番目のステップはフォワード レンダリングから始まります (異なるライティング モデルをさまざまな用途に使用できます)オブジェクト)

2Forward+ (タイル状フォワード レンダリング、ブロックフォワード レンダリング)

● 帯域幅を削減し、複数の光源をサポートし、preZ を強制します
○ ブロック インデックス、深度、および法線情報を使用して、ライティング計算に必要なフラグメントに到達します。
○ 法線と深度を必要とする後処理には、別の RT のレンダリングが必要
○ preZ の強制使用 (この概念が含まれていない場合は、深度の事前計算として理解できます)

3 クラスター化されたレンダリング

● 帯域幅が相対的に減少し、複数の光源の下で効率が向上します
● 前方と遅延に分割
● 詳細な補足拡張: https://zhuanlan.zhihu.com/p/54694743

4. 遅延レンダリングにおける MSAA の問題

● 補足図に「NO MSAA Possible」と記載されていますが、これは遅延レンダリング パイプラインが MSAA をサポートしていないことを意味します
● 遅延レンダリングにおける MSAA の問題: ピクセルはラスター化されているため、より大きなピクセルは使用できません。

5. 異なるパスでの光源シェーダーのコンパイル

● 詳細は公式ドキュメントを参照してください。

6、PreZ(ゼットプリパス)

● 実際は深度計算です
● デプスマップとの違い
○ 全て深度情報です
■ PreZ はパスを使用し、深度のみをカウントします
■ デプスマップは RT (RenderTexture) として計算され、深度情報は描画されますRTの上級者。
○ 具体的な用途:
■ PreZ は大規模なグラスおよび透明ソートに使用されます
● Early-z と PreZ の違い
○ Early-Z、自動、面の数が必要です (ハードウェア自動)
○ PreZ、Early-Z が失敗した場合, または、深度マップが必要な場合、手動による代替方法については、
後のコースで詳しく説明します。

7. いくつかの追加

● Unity の urp は遅延レンダリングをサポートしていませんが、古いパイプラインはサポートしています。
● UE のデフォルトのパイプラインは遅延レンダリング パイプラインです。
● 通常、遅延レンダリングはホスト/大規模プロジェクトに使用されます。

おすすめ

転載: blog.csdn.net/weixin_45810196/article/details/131225767