「フラットシェーディング」の版間の差分
編集の要約なし |
Administrator (トーク | 投稿記録) |
||
| 4行目: | 4行目: | ||
==GLSL== | ==GLSL== | ||
[[GLSL]]では[[バーテックスシェーダー]]の出力変数に「flat修飾子」を付けるとフラットシェーディングとなる。<syntaxhighlight lang="glsl"> | [[GLSL]]では[[バーテックスシェーダー]]の出力変数に「flat修飾子」を付けるとフラットシェーディングとなる。 | ||
<syntaxhighlight lang="glsl"> | |||
// 入力 | // 入力 | ||
layout (location = 0) in vec3 VertexPosition; | layout (location = 0) in vec3 VertexPosition; | ||
layout (location = 1) | layout (location = 1) in vec3 VertexNormal; | ||
// 出力(これ) | // 出力(これ) | ||
| 15行目: | 16行目: | ||
void main() | void main() | ||
{ | { | ||
// 出力変数に「flat out」と書かれていると、ここが頂点1個分しか呼ばれない | // 出力変数に「flat out」と書かれていると、ここが頂点1個分しか呼ばれない | ||
} | } | ||
</syntaxhighlight> | |||
[[バーテックスシェーダー]]の出力値を格納する変数にflat修飾子をつけると、その[[バーテックスシェーダー]]では[[ポリゴン]]を構成する3つの[[頂点]]のいずれか1つだけが計算され、その値が[[フラグメントシェーダー]]に渡ってくる。前述の概要で「[[法線]]を面単位で持つ」と書いたが、GLSLでは「ポリゴンを構成する[[頂点]]の[[法線]]のいずれか1つが使われる」という内容になっている。 | |||
== HLSL == | == HLSL == | ||