メインメニューを開く

「マルチプルレンダーターゲット」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
'''マルチプル・レンダー・ターゲット'''([[英語]]:Multiple Render Target、略称:MRT)とは、一回の[[シェーダー]]呼び出しで複数の[[レンダーターゲット]]に描画する機能である。
+
'''マルチプル・レンダー・ターゲット'''([[英語]]:Multiple Render Target、略称:MRT)とは、一回の[[シェーダー]]呼び出しで複数のレンダーターゲットに描画する機能である。
  
 
==対応状況==
 
==対応状況==
13行目: 13行目:
 
[[遅延レンダリング]]では「[[色]]」や「[[法線]]」、「[[深度]]」などを複数の[[レンダーターゲット]]に出力する。ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。
 
[[遅延レンダリング]]では「[[色]]」や「[[法線]]」、「[[深度]]」などを複数の[[レンダーターゲット]]に出力する。ならば出力先の[[レンダーターゲット]]を複数指定できるようにすれば1回のシェーダー呼び出しで完結できるじゃないか、という代物である。
  
[[遅延レンダリング]]が大流行しだした時期に[[Xbox 360]]と[[PS3]]が発売した。
+
[[遅延レンダリング]]が大流行しだした時期にXbox 360とPS3が発売した。
これらには[[遅延レンダリング]]を高速化する目的でMRTが搭載された。
+
これらには遅延レンダリングを高速化する目的でMRTが搭載された。
  
 
==メリット==
 
==メリット==
31行目: 31行目:
 
[[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。
 
[[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。
 
[[HLSL]]の記述例。
 
[[HLSL]]の記述例。
<source lang=c>
+
<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行目: 61行目:
 
</source>
 
</source>
  
[[OpenGL]]や[[OpenGL ES]]でも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。
+
OpenGLやOpenGL ESでも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。
<source lang=c>
+
<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);
 
     gl_FragData[0] = ps_c0.xxxx;
 
     gl_FragData[0] = ps_c0.xxxx;
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 lang=c>
+
<source>
 
     layout (location = 0) out vec3 position;
 
     layout (location = 0) out vec3 position;
 
     layout (location = 1) out vec3 normal;
 
     layout (location = 1) out vec3 normal;
81行目: 81行目:
 
* [[グレースケール変換定数]]
 
* [[グレースケール変換定数]]
 
* [[MonoGameで遅延レンダリングをする]]
 
* [[MonoGameで遅延レンダリングをする]]
* [[ハードウェアインスタンシング]]
 
  
[[category: コンピューター・グラフィックス]]
+
[[category: コンピューターグラフィックス]]
[[category: GPU]]
 

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)