「マルチプルレンダーターゲット」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (同じ利用者による、間の2版が非表示) | |||
| 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 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; | ||
| 81行目: | 81行目: | ||
* [[グレースケール変換定数]] | * [[グレースケール変換定数]] | ||
* [[MonoGameで遅延レンダリングをする]] | * [[MonoGameで遅延レンダリングをする]] | ||
* [[ハードウェアインスタンシング]] | |||
[[category: | [[category: コンピューター・グラフィックス]] | ||
[[category: GPU]] | |||