フォワードレンダリングと遅延レンダリングのパフォーマンスのトレードオフはどのくらいですか?


9

フォワードレンダリングは、入力ジオメトリとライティング情報から直接表面フラグメントの輝度値を計算するプロセスです。遅延レンダリングは、そのプロセスを2つのステップに分割します。最初に、入力ジオメトリをラスタライズして構築されたマテリアルプロパティ(ジオメトリバッファ、またはGバッファ)を含むスクリーンスペースバッファを生成し、次にG-を組み合わせて各ピクセルの輝度値を生成します。照明情報を含むバッファ。

遅延レンダリングは、多くの場合、フォワードレンダリングの最適化として提示されます。1つの説明は、ライティングはかなり高価であり、オーバードローがある場合は画面に表示されないピクセルをライティングしているのに対し、マテリアルプロパティをGバッファに格納して後でライトする場合は、ライティングするピクセルのみをライティングするということです。実際に画面に表示されます。これはあなたにも、深さ、プリパスを行い、その後にデプステストセットで前方のレンダリングパスを行うことができますことを考えると、実際に延期の利点であるD3D11_COMPARISON_EQUALか、GL_EQUALまたは同等の?

遅延レンダリングには、GPUでより適切にスケジュールする可能性もあります。1つの大きなワープ/波面を小さなジオメトリ波面に分割し、その後小さな照明波面を使用すると、占有率が向上します(同時に飛行中の波面が増えます)。ただし、帯域幅の使用量も多くなります(多数のチャネルをGバッファーに書き込んでから、ライティング中にそれらを読み戻す)。ここでの詳細は明らかにGPUに大きく依存しますが、一般的な原則は何ですか?

フォワードレンダリングと据え置きレンダリングのどちらを決定するかについて、他にパフォーマンスに関する考慮事項はありますか?(必要に応じて、各手法のバリエーションを使用できると想定します。つまり、前方向のタイルと遅延後のタイルを比較することもできます。)

回答:


11

深度事前パスを実行し、その情報を使用して実際に表示されていないピクセルを拒否することにより、フォワードレンダリングでも不透明オブジェクトからのオーバードローを回避できます。ただし、シーンの頂点コストによっては、デプスプリパスによって許容できない量のパフォーマンスオーバーヘッドが追加される場合があります。さらに、GPUのピクセルシェーディングパイプラインを使用してレンダリングすると、レンダリングされるピクセルあたりのコストは発生せず、レンダリングされる2x2ピクセルクワッドあたりのコストが発生します。そのため、深度の事前パスを実行しても、三角形のエッジが作業シェーディングピクセルを浪費し、破棄されます。

GPUスケジューリングは複雑なトピックであり、転送と遅延の間のトレードオフは、単に「より速く実行されてより多くの帯域幅を使用する」というだけではありません。順次実行される2つの同等に安価な操作があり、それぞれが同じ数のリソースを使用する場合、それらを別々のシェーダーに分割する理由はありません。それぞれがXリソースを使用する2つの小さな波面は、基本的に1つの長い波面よりもうまく機能しません。 Xリソースも使用します。ただし、順番に実行するのに安価な操作と高価な操作がある場合は、個別のシェーダーに分割することでメリットが得られる可能性があります。それ' s進行中の波面が非常に少ないため、帯域幅を飽和させるのに十分な操作を発行できないため、フォワードレンダリングでGPUのすべての帯域幅を使用できない可能性があります。しかし、もしあなたがされている帯域幅が制限され(それはおそらくより多くの帯域幅を使用するため)、遅延レンダリングにも利点が存在しない場合があります。

追加のパフォーマンスの問題は、そのオブジェクトに異なるシェーダーを使用するだけで、フォワードレンダリングが異なるマテリアルタイプ(異なるBRDFなど)をサポートすることです。単純な据え置きレンダラーは、異なるマテリアルタイプを異なる方法で処理する必要があります(シェーダーのブランチの可能性があります)。レンダリングされるオブジェクトに応じて、作業がワープ/ウェーブフロントにグループ化されなくなるためです。これはタイルレンダラーで軽減できます。画面の特定の領域のみが代替マテリアルタイプ(たとえば、髪の毛)を使用している場合、そのマテリアルのピクセルを含むタイルに対してのみ、マテリアルタイプブランチでシェーダーバリエーションを使用できます。 。

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