差分

ナビゲーションに移動 検索に移動

マルチプルレンダーターゲット

143 バイト追加, 2019年10月29日 (火) 00:24
'''マルチプルレンダーターゲットマルチプル・レンダー・ターゲット'''([[英語]]:Multiple Render Target、略称:MRT)とは、一回の[[シェーダー]]呼び出しで複数のレンダーターゲットに描画する機能である。
== 対応状況 ==* DirectX 9から使えるが、DirectX 9.0cくらいまでは対応・非対応の製品が乱立していた。** [[ATI]]製品はほとんどいけた。** [[NVIDIA]]製品はGeForce 6x00シリーズくらいから対応だと思う。** 現行製品はすべて対応している。* [[MonoGame]]ではHiDefに設定すると使える。* [[OpenGL ES]]では[[OpenGL ES 3.0]]以降で使える。
== 概要 ==*DirectX 9から使えるが、DirectX 9.0cくらいまでは対応・非対応の製品が乱立していた。=== 3DテレビやVR ===**[[ATI]]製品はほとんどいけた。**[[NVIDIA]]製品はGeForce 6x00シリーズくらいから対応だと思う。**現行製品はすべて対応している。*[[MonoGame]]では「HiDef」に設定すると使える。*[[3DテレビOpenGL ES]]では[[VROpenGL ES 3.0]]向けに映像を出力する際には、人間の目と目の間隔分だけ微妙にカメラ視点をズラした2つの画像を出力する。つまり1フレームを表示するには「右目用」と「左目用」の2枚の画像を描くことになる。以降で使える。
==概要==[[シェーダー遅延レンダリング]]は「実行速度」よりも「起動速度」が段違いに遅いので呼び出す回数を減らせれば劇的に速くなる。つまりカメラの座標がちょっと違うだけなのに2回もシェーダーを回すとかまったくイケてない。では「[[色]]」や「[[法線]]」、「[[深度]]」などを複数の[[レンダーターゲット]]に出力する。ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。
そこで出力先の[[レンダーターゲット遅延レンダリング]]([[テクスチャ]])を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。が大流行しだした時期にXbox 360とPS3が発売した。これらには遅延レンダリングを高速化する目的でMRTが搭載された。
=== 遅延レンダリング =メリット==[[遅延レンダリング]]では「[[色]]」や「[[法線]]」、「[[深度シェーダー]]」などを複数のの呼び出し、いわゆる「[[レンダーターゲットDrawコール]]に出力する。」が減る。
ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。 == メリット ==シェーダーの呼び出し、いわゆる「Drawコール」が減る。 == デメリット ==
当然ながらMRT向けに[[シェーダー]]を書き直さなければならない。
彼らは相見えない。「[[プログラマー]]」と一括にはできないほど根本的な思想に違いがある。
== 記述例 ==
[[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。
[[HLSL]]の記述例。
</source>
OpenGLやOpenGL ESでも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。<source> vec4 ps_c0 = vec4(0.0, 0.5, 1.0, 0.0); gl_FragData[0] = ps_c0.xxxx; gl_FragData[1] = ps_c0.yyyx; gl_FragData[2] = ps_c0.zzzz;</source> OpenGL ES 3.0(GLSL ES 3.0)では「gl_FragColor」も「gl_FragData」も廃止された。代わりにlayoutを使う。これによりgl_FragDataは問答無用でvec4の配列であり無駄が多かったのが改善された。ただHLSLのstructの方がわかりやすいね。<source> layout (location = 0) out vec3 position; layout (location = 1) out vec3 normal; layout (location = 2) out vec4 color;</source> == 関連項目 == * [[Rec. 709]]* [[グレースケール変換定数]]
[[category: コンピューターグラフィックス]]
匿名利用者

案内メニュー