差分

ナビゲーションに移動 検索に移動

フラットシェーディング

136 バイト除去, 2021年12月10日 (金) 04:39
==GLSL==
[[GLSL]]では[[バーテックスシェーダー]]の出力変数に「flat修飾子」を付けるとフラットシェーディングとなる。<syntaxhighlight lang="glsl">
// 入力
layout (location = 0) in vec3 VertexPosition;
layout (location = 1) ih in vec3 VertexNormal;
// 出力(これ)
void main()
{
// フォンシェーディングやグローシェーディングなんかを書いておく
// 出力変数に「flat out」と書かれていると、ここが頂点1個分しか呼ばれない
}
</syntaxhighlight>
</syntaxhighlight>この場合、[[バーテックスシェーダー]]の出力値を格納する変数にflat修飾子をつけると、その[[フォンシェーディング]]や[[グローシェーディング]]などを[[アルゴリズムバーテックスシェーダー]]を書いておいても、では[[ポリゴン]]を構成する3つの[[頂点]]のいずれか1つだけが計算され、その結果がのいずれか1つだけが計算され、その値が[[フラグメントシェーダー]]に渡ってくる。つまりGLSLでは前述の概要で「に渡ってくる。前述の概要で「[[法線]]を面単位で持つ」と書いたが「ポリゴンを構成するを面単位で持つ」と書いたが、GLSLでは「ポリゴンを構成する[[頂点]]の[[法線]]のいずれか1つが使われる」という内容になっている。
== HLSL ==

案内メニュー