【UE Rendering System】 1フレームのレンダリング処理

RenderDocをダウンロードし、
UE プラグインで RenderDoc Plugin プラグインを開くことを選択し、それを使用して実行時にフレームをキャプチャすると、UE のレンダリング プロセスを表示できます。

0. 前段階

前段階は主に透視変換、投影、初期化パラメータなどのセットです...

GAMES101: 現代コンピュータグラフィックス入門 (1) 変換、ラスタライズ、色付けを参照してください。

1. PrePass(レンダリング前処理段階)

ここに画像の説明を挿入

右側でレンダリングされた深度マップを確認すると、1 つずつレンダリングされていることがわかります。

ここに画像の説明を挿入

実際、ここをクリックすると、各メッシュの頂点情報と属性が表示されます。

ここに画像の説明を挿入

頂点データは当然 PrePass および BasePre ステージで入力されますが、AO、Lights、および PostProcessing では主に画面空間内の三角形が入力に使用されます。

2.HZBの構築

HZB テクノロジ (階層 Z バッファ オクルージョン カリング) は、以下の BuildHZB で使用されています。これは、Z バッファ テクノロジを使用し、オブジェクトのバウンディング ボールの半径に従って、オブジェクト内の他のオブジェクトによってオクルージョンされているオブジェクトを削除します。 PrePass ステージを実行し、内部でミップマップをレイヤー化します。半径に応じて、深度テスト用にさまざまなレベルのミップマップを選択します。

注: ここでのカリングは、オクツリーではなく、ParallelFor の線形カリングです。

ここに画像の説明を挿入

3.ベースパス

レンダリングは BasePass で実行されます。シーン内に 5 つのオブジェクトがあり、各オブジェクトが 5 つのライティング計算を実行する場合、最終的に 5×5=25 回、遅延レンダリングはライティング レンダリングの計算を遅らせることです。まず、レンダリングするたびに、オブジェクトの BaseColor (基本色)、表面法線、粗さ、ピクセル深度などを異なる画像にレンダリングし、これら 5 つの光源に対して 5 回の計算を実行し、最終的に 5+5=10 回の計算のみを実行します。

ここに画像の説明を挿入

最初に ClearRenderTargetView が次の BasePass レンダリングのために 7 RT をクリアし、次に BasePassParallel で 6 つの並列レンダリングを実行することがわかります。

ここに画像の説明を挿入 ここに画像の説明を挿入 ここに画像の説明を挿入 ここに画像の説明を挿入 ここに画像の説明を挿入 ここに画像の説明を挿入

上記は 6 回のレンダリングの結果です。もちろん、実際には 7 つの RT が描画されます。ここでは最初の 3 つだけを示しています。キャラクターが 3 つのレンダリング、1 つのボール、1 つの床、1 つの椅子に分割されていることがわかります。合計 6 回のレンダリング。これは BasePass 全体のプロセスでもあります。BasePass の SceneDepth は、PrePass の出力値です。

レンダリングされたシェーダー コードは、エンジンの \UnrealEngine\UE_5.1\Engine\Shaders\Private に配置され、BasePass のメイン シェーダー コードが保存されている BasePassPixelShader.usf ファイルが見つかります。ソースコードに従ってマテリアル内のパラメータが取り出され、入力メッシュのジオメトリ情報に従って、BasePass レンダリング時に対応するシェーダ コードが生成されます。

ここに画像の説明を挿入

4. 影の深さ

次に、そのシャドウマップを生成します。

ここに画像の説明を挿入

5. 拡散間接と AO

AO: 新しいバージョンでは、Lumen を使用して一部の AO 操作が置き換えられ、環境光マスクのレイヤーが追加されています。

ここに画像の説明を挿入

画面全体の法線マップを計算する前回のBasePassのAとBのRTとSceneDepthZを入力します

ここに画像の説明を挿入
ここに画像の説明を挿入

Lumen についてはここでは解析しませんので、今後の新しい記事で詳しく解析しますが、ここでは Lumen は多くの計算を行い、多くの画像を生成し、最後に AO を重ね合わせて、最終的に次の画像を取得しました。

ここに画像の説明を挿入

6. ライト

シーンには DirectionalLight があるため、ここで光源が計算され、影が生成されます。

ここに画像の説明を挿入

ここに画像の説明を挿入

平行光でないと、カメラで間引いた物体に点光源(非平行光)が当たると描画されないので面倒です。したがって、カメラが照明ジオメトリ内にあるかどうかを判断する必要があり、そうである場合、深度テストはオフになります。

7.その他のハンドル

シーン内の特定の光源が処理された後、ボリューム雲、大気、高さフォグ、そして最後に透明なボリュームが処理されます。

ここに画像の説明を挿入

ここに画像の説明を挿入

8.PostProcess(後処理)

上記では、処理が完了しても出力結果は非常に悪いため、後処理でアンチエイリアス、露光、色補正などの操作が実行されます。

ここに画像の説明を挿入

したがって、その後、後処理動作が実行される。

ここに画像の説明を挿入

最終的な結果は悪くありません。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45617648/article/details/131926509