「フラットシェーディング」を編集中

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

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

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

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

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

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

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