私のGLSLフラグメントシェーダでは、スペース内の特定のラインからのフラグメントの距離を計算できるようにしたいと考えています。glslでgl_FragCoordを計算する方法
この結果は、私が最初gl_FragCoord
で終わるものをミラーリングするために、私の頂点シェーダに設定された様々なVEC2を使用しようとしていますということです。
varying vec2 fake_frag_coord;
//in vertex shader:
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
fake_frag_coord=(gl_ModelViewProjectionMatrix * gl_Vertex).xy;
今、私は期待してフラグメントシェーダで:
gl_FragCoord.xy==fake_frag_coord
しかし、そうではありません。 gl_Position
のパイプラインはどのような操作を行い、を無視しているgl_FragCoord
に変換しますか?
私はあなたが間違っていると間違っていましたが、gl_ModelViewProjectionMatrix * gl_Vertexを使用すると、計算エラーが発生する可能性があります。 – karx11erx
Nitpick:ラスタライズ処理中(頂点シェーダとフラグメントシェーダの間)に発生するパースペクティブ分割を実行していないので、実際には正規化されたデバイス座標ではなくクリップ空間座標が与えられます。 http://www.glprogramming.com/red/chapter03.html#name1 – Pike65
@ Pike65これは単なるニックピックではなく、透視投影のために全く異なる値になるはずです。 –