「マルチプルレンダーターゲット」を編集中
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | ''' | + | '''マルチプルレンダーターゲット'''([[英語]]:Multiple Render Target、略称:MRT)とは、一回の[[シェーダー]]呼び出しで複数のレンダーターゲットに描画する機能である。 |
− | ==対応状況== | + | == 対応状況 == |
+ | * DirectX 9から使えるが、DirectX 9.0cくらいまでは対応・非対応の製品が乱立していた。 | ||
+ | ** [[ATI]]製品はほとんどいけた。 | ||
+ | ** [[NVIDIA]]製品はGeForce 6x00シリーズくらいから対応だと思う。 | ||
+ | ** 現行製品はすべて対応している。 | ||
+ | * [[MonoGame]]ではHiDefに設定すると使える。 | ||
+ | * [[OpenGL ES]]では[[OpenGL ES 3.0]]以降で使える。 | ||
− | + | == 概要 == | |
− | + | === 3DテレビやVR === | |
− | + | [[3Dテレビ]]や[[VR]]向けに映像を出力する際には、人間の目と目の間隔分だけ微妙にカメラ視点をズラした2つの画像を出力する。つまり1フレームを表示するには「右目用」と「左目用」の2枚の画像を描くことになる。 | |
− | |||
− | |||
− | |||
− | + | [[シェーダー]]は「実行速度」よりも「起動速度」が段違いに遅いので呼び出す回数を減らせれば劇的に速くなる。つまりカメラの座標がちょっと違うだけなのに2回もシェーダーを回すとかまったくイケてない。 | |
− | [[ | ||
− | [[ | + | そこで出力先の[[レンダーターゲット]]([[テクスチャ]])を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。 |
− | |||
− | == | + | === 遅延レンダリング === |
− | [[ | + | [[遅延レンダリング]]では「[[色]]」や「[[法線]]」、「[[深度]]」などを複数の[[レンダーターゲット]]に出力する。 |
− | ==デメリット== | + | ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。 |
+ | |||
+ | == メリット == | ||
+ | シェーダーの呼び出し、いわゆる「Drawコール」が減る。 | ||
+ | |||
+ | == デメリット == | ||
当然ながらMRT向けに[[シェーダー]]を書き直さなければならない。 | 当然ながらMRT向けに[[シェーダー]]を書き直さなければならない。 | ||
− | [[COBOL]]や[[Java]]や[[PHP]]を愛する[[IT土方]] | + | [[COBOL]]や[[Java]]や[[PHP]]を愛する[[IT土方]]的な考えであれば「既存のシェーダーを2回呼び出せばいいじゃん」となるところである。 |
− | + | 一方、ゲーム業界はそこへ突撃して「このゲームのここがすごい!」と宣伝材料にしようとする。 | |
彼らは相見えない。「[[プログラマー]]」と一括にはできないほど根本的な思想に違いがある。 | 彼らは相見えない。「[[プログラマー]]」と一括にはできないほど根本的な思想に違いがある。 | ||
− | ==記述例== | + | == 記述例 == |
[[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。 | [[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。 | ||
− | + | HLSLの記述例。 | |
− | <source | + | <source> |
// Rec. 709グレースケール変換定数 | // Rec. 709グレースケール変換定数 | ||
const float3 luma = float3(0.2126, 0.7152, 0.0722); | const float3 luma = float3(0.2126, 0.7152, 0.0722); | ||
61行目: | 67行目: | ||
</source> | </source> | ||
− | + | == 関連項目 == | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ==関連項目== | ||
* [[Rec. 709]] | * [[Rec. 709]] | ||
* [[グレースケール変換定数]] | * [[グレースケール変換定数]] | ||
− | |||
− | |||
− | [[category: | + | [[category: コンピューターグラフィックス]] |
− |