2012-04-08 1 views
0

頂点シェーダとフラグメントシェーダを使用してフォグを生成する場合、一般的な方法の1つは、頂点シェーダ内の頂点の距離を計算し、フォグ混合色をフラグメントシェーダに適用することです。三角形の内側の点のgl_FragColorを計算したのは誰ですか?

私の質問は、三角形の頂点の距離だけを計算したので、OpenGLは三角形の内部の点の色をどのように決定するのですか?それが自動的に計算される場合、計算を制御する方法はありますか?

答えて

2

OpenGL ES 2では、頂点シェーダからフラグメントシェーダに渡されるすべての属性の値が、陰影付けされる三角形のサーフェス上で線形補間され、透視補正されます。

OpenGLの他のバージョンでは、この動作を変更することができます。

たとえば、霧の場合、霧の数式が世界の空間上で線形関数である限り、頂点シェーダーの補間されたフォグ値をフラグメントシェーダーのgl_FragColorにブレンドして、正しく表示する必要があります。

ただし、フォグが線形でない場合、正しい結果を得るには、フラグメントシェーダーで各フラグメントのフォグ値を個別に計算する必要があります。

関連する問題