「マルチプルレンダーターゲット」の版間の差分

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の1版が非表示)
31行目: 31行目:
[[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。
[[ピクセルシェーダー]]の戻り値を構造体にして一度に複数の色を返す感じになる。
[[HLSL]]の記述例。
[[HLSL]]の記述例。
<source>
<source lang=c>
// Rec. 709グレースケール変換定数
// Rec. 709グレースケール変換定数
const float3 luma = float3(0.2126, 0.7152, 0.0722);
const float3 luma = float3(0.2126, 0.7152, 0.0722);
62行目: 62行目:


[[OpenGL]]や[[OpenGL ES]]でも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。
[[OpenGL]]や[[OpenGL ES]]でも似たような感じである。通常はシステム予約の変数「gl_FragColor」に色を設定するが、MRTの場合は「gl_FragData」配列に各種の値を設定する。
<source>
<source lang=c>
     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;
71行目: 71行目:
[[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 lang=c>
     layout (location = 0) out vec3 position;
     layout (location = 0) out vec3 position;
     layout (location = 1) out vec3 normal;
     layout (location = 1) out vec3 normal;
83行目: 83行目:
* [[ハードウェアインスタンシング]]
* [[ハードウェアインスタンシング]]


[[category: コンピューターグラフィックス]]
[[category: コンピューター・グラフィックス]]
[[category: GPU]]