2011-11-08 33 views
-1

球を陰にしようとしています。私は球の各頂点に法線を計算しましたが、ファセット上の他のピクセルがどのように影を付けるのか分かりません。これに関する助言?私はOpenGL 3+を使用しています。グーローシェーディングを使って球を陰影付けする

+2

私たちにあなたのコードとあなたの問題を教えてください。基本的に、コーナーで計算された色は、単に表面上に補間されます。 – Bart

+0

"ファセット上の他のピクセルがどのように影をつけられるのか分かりません。"どのようにそれらを陰にしたいですか? –

答えて

2

Gouraudシェーディングの場合、照明モデルは三角形の各頂点の(色として)計算され、三角形ピクセル上で線形補間されます。

OpenGLでは、頂点シェーダの各頂点の連結モデルを、可変としてフラグメントシェーダに渡されるカラーベクトルとして計算し、線形補間は自動的に「無料」で行われます。

Phongシェーディングが必要な場合は、頂点ノーマルをフラグメントシェーダに直接渡します。このシェーダは自動的に線形補間されます。次に、この補間されたノーマルを使用して、フラグメントシェーダで照明モデルを計算します。

+0

これは私が>> >>線形補間は無料で "自動的に行われる"だから基本的に陰影のために、私はメインコードを混乱させない、私は* .vertと* .fragファイルを編集する必要がありますか? –

+0

この補間を無効にする唯一の方法は、古いOpenGL互換性プロファイルでglShadeModel(GL_FLAT)を有効にすることです。もちろん、上記以外のシェーダーでもすべてを行うことができます。 – Blackhex

関連する問題