「マルチプルレンダーターゲット」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 1行目: | 1行目: | ||
'''マルチプル・レンダー・ターゲット'''([[英語]]:Multiple Render Target、略称:MRT)とは、一回の[[シェーダー]] | '''マルチプル・レンダー・ターゲット'''([[英語]]:Multiple Render Target、略称:MRT)とは、一回の[[シェーダー]]呼び出しで複数の[[レンダーターゲット]]に描画する機能である。 | ||
==対応状況== | ==対応状況== | ||
| 13行目: | 13行目: | ||
[[遅延レンダリング]]では「[[色]]」や「[[法線]]」、「[[深度]]」などを複数の[[レンダーターゲット]]に出力する。ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。 | [[遅延レンダリング]]では「[[色]]」や「[[法線]]」、「[[深度]]」などを複数の[[レンダーターゲット]]に出力する。ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。 | ||
[[遅延レンダリング]] | [[遅延レンダリング]]が大流行しだした時期に[[Xbox 360]]と[[PS3]]が発売した。 | ||
これらには[[遅延レンダリング]]を高速化する目的でMRTが搭載された。 | |||
==メリット== | ==メリット== | ||
| 61行目: | 61行目: | ||
</source> | </source> | ||
[[OpenGL]]や[[OpenGL ES]]でも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。 | |||
<source> | <source> | ||
vec4 ps_c0 = vec4(0.0, 0.5, 1.0, 0.0); | vec4 ps_c0 = vec4(0.0, 0.5, 1.0, 0.0); | ||
| 69行目: | 69行目: | ||
</source> | </source> | ||
OpenGL ES 3.0(GLSL ES 3.0)では「gl_FragColor」も「gl_FragData」も廃止された。 | [[OpenGL ES]] 3.0(GLSL ES 3.0)では「gl_FragColor」も「gl_FragData」も廃止された。 | ||
代わりにlayoutを使う。これによりgl_FragDataは問答無用でvec4の配列であり無駄が多かったのが改善された。ただHLSLのstructの方がわかりやすいね。 | 代わりにlayoutを使う。これによりgl_FragDataは問答無用でvec4の配列であり無駄が多かったのが改善された。ただHLSLのstructの方がわかりやすいね。 | ||
<source> | <source> | ||