頂点シェーダーとフラグメント シェーダーを使用してフォグを生成する場合、一般的な方法の 1 つは、頂点シェーダーで頂点の距離を計算し、フラグメント シェーダーでフォグ混合色を適用することです。
私の質問は、三角形の頂点の距離のみを計算したため、OpenGL は三角形内の点の色をどのように決定するのでしょうか? 自動的に計算される場合、計算を制御する方法はありますか?
頂点シェーダーとフラグメント シェーダーを使用してフォグを生成する場合、一般的な方法の 1 つは、頂点シェーダーで頂点の距離を計算し、フラグメント シェーダーでフォグ混合色を適用することです。
私の質問は、三角形の頂点の距離のみを計算したため、OpenGL は三角形内の点の色をどのように決定するのでしょうか? 自動的に計算される場合、計算を制御する方法はありますか?
OpenGL ES 2 では、頂点シェーダーからフラグメント シェーダーに渡されるすべての属性の値は、シェーディングされる三角形の表面上で線形補間され、遠近補正されます。
OpenGL の他のバージョンでは、この動作を変更できます。
たとえば、フォグの場合、フォグの式がワールド空間の線形関数である限り、補間されたフォグの値を頂点シェーダーからフラグメント シェーダーの gl_FragColor にブレンドすると、正しく見えるはずです。
ただし、フォグが線形でない場合、正しい結果を得るには、フラグメント シェーダーで各フラグメントのフォグ値を個別に計算する必要があります。