複数のレンダー ターゲットを使用する意味はありますか? 1 つのレンダー ターゲットに描画し、それをテクスチャに保存してから、ターゲットをクリアして再度使用することはできませんか?
2 に答える
MRTについて理解する重要なことは、すべてのレンダーターゲットにまったく同じデータを描画しているわけではないということです。
ピクセルシェーダーは4つの浮動小数点値のみを出力できます。通常、これらの4つの値を使用して、その特定のポイントで色を生成します。ただし、代わりに深度データまたは通常のデータを出力したい場合があるため、これらの4つの浮動小数点値を使用して、必要になる可能性のある他の情報を表します。
利点は、MRTを使用すると、シーンを1回描画してさまざまなレンダーターゲットに出力するだけでよいため、1回のレンダーパスで、拡散カラーデータを受け取る1つのレンダーターゲットに出力でき、別のレンダーターゲットが通常のデータを受け取ることができます。 3番目のレンダーターゲットは深度データを受け取ります。私が何を意味するのかをよりよく理解するには、以下を参照してください。
これは、実際にはRGBA値が他のものになる場合です。たとえば、ポリゴンの法線のX、Y、Zが描画されるため、RGBになります。
MRTを使用することにはいくつかの落とし穴があります。たとえば、すべてのレンダリングターゲットは同じビット深度である必要があり、GPUテクスチャフィルレートをプッシュし始めますが、全体的な利点は落とし穴を超えています。
複数のレンダー ターゲットは、1 つのジオメトリをレンダリングし、さまざまな出力を個別のレンダー ターゲットに収集する場合に使用されます。
今日、この技術は主にディファード シェーディングの実装に使用されています。ディファード シェーディングでは、複数のレンダー ターゲットが、サーフェス法線、スペキュラー カラー、スペキュラー指数などの照明情報、および深度とディフューズ カラーの情報を格納します。結合されたレンダー ターゲットのセットは、G バッファーと呼ばれます。
Deferred Shading と G-Buffers の入門書については、6800 Leagues Under the Sea (Hargreaves & Harris 2004)を参照してください。