Multiple Render Targets とは

3Dコンピュータグラフィックスの分野では、複数のレンダリングターゲット(MRT)は、プログラマブルレンダリングパイプラインが複数のターゲットテクスチャを一度にレンダリングすることを可能にする最新のグラフィックス処理ユニット(GPU)の特徴である。これらのテクスチャは、他のシェーダへの入力として、または3Dモデルに適用されるテクスチャマップとして使用できます。 OpenGL 2.0とDirect3D 9によって導入されたMRTは、ビデオゲームなどのリアルタイム3Dアプリケーションにとって非常に重要です。 MRTが出現する前に、プログラマは、各レンダリングターゲットテクスチャに対して一度3Dシーンを描くためにGPUにコマンドを発行しなければならず、結果として冗長な頂点変換が行われ、リアルタイムプログラムでは、かなり時間がかかることがあります。 MRTでは、プログラマは各レンダリングターゲットの出力値を返すピクセルシェーダを作成します。このピクセルシェーダは、描画コマンドを1つ使用してすべてのレンダーターゲットにレンダリングします。
MRTの一般的な使用法は、遅延シェーディングであり、フォワードシェーディングとは異なり、個々のオブジェクトの代わりに3Dシーン全体のライティング計算を一度に実行するシェーディングプロセスです。これをリアルタイムで実行するために、MRTは、複数のレンダリングターゲットにライティング計算に必要な情報を格納するために使用され、照明された最終イメージを計算するためにシーン全体が描画された後に使用されます。典型的には、1つのレンダーターゲットは、オブジェクトの色および表面情報を保持し、別のレンダーターゲットは、光の反射を計算するために使用されるシーンの表面法線および深さ情報を含む。追加のレンダーターゲットを使用して、サーフェスの鏡面性やアンビエントオクルージョンデータなどの情報を格納できます。