Target、略称:MRT)とは、一回のシェーダー呼び出しで複数のレンダーターゲットに描画する機能である。9.0cくらいまでは対応・非対応の製品が乱立していた。ATI製品はほとんどいけた。6x00シリーズくらいから対応だと思う。現行製品はすべて対応している。MonoGameでは「HiDef」に設定すると使える(OpenGL系ではまともに動かない)。複数のレンダーターゲットに出力する。出力先のレンダーターゲットを複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。360とPS3が発売した。これらには遅延レンダリングを高速化する目的でMRTが搭載された。ソースを編集]シェーダーの呼び出し、いわゆる「Drawコール」が減る。ソースを編集]当然ながらMRT向けにシェーダーを書き直さなければならない。COBOLやJavaやPHPを愛するIT土方的な考えであれば「既存のシェーダーを2回呼び出せばいいじゃん」となるところである。この世界では「車輪の再発明だ」と批判されることであろう。ゲーム業界はそこへ突撃して「このゲームのここがすごい!」と宣伝材料にしようとする。ゲームの面白さには一切関係ない。「プログラマー」と一括にはできないほど根本的な思想に違いがある。ソースを編集]ピクセルシェーダーの戻り値を構造体にして一度に複数の色を返す感じになる。マルチプルレンダーターゲットでは構造体で複数の色を返す。ESでも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。3.0)では「gl_FragColor」も「gl_FragData」も廃止された。代わりにlayoutを使う。これによりgl_FragDataは問答無用でvec4の配列であり無駄が多かったのが改善された。HLSLのstructの方がわかりやすいね。プライバシー・ポリシーMonoBookについて免責事項モバイルビュ。