2016-12-09 5 views
1

をレガシーGLSLシェーダの更新とは簡単だった、それは私がとのトラブル抱えている以下の通りです:は、そのほとんどがそれであったが、私は私が持っている古い<em>GLSL 120シェーダ</em>を更新しようとしている現代のGLSLに

頂点シェーダ: gl_FrontSecondaryColor、gl_FrontColor

フラグメントシェーダ: GL_COLOR、gl_SecondaryColor

問題は、私はのための十分な選択肢を見つけることができていないということです3.yx以上。例えば

の交換gl_FragColor

layout (location = 0) out vec4 fragColor; 

を作成することである。しかし述べた上で、他のために、正確にどのようにそれらが処理されるのでしょうか?

+0

OpenGLのグラフィックパイプラインが大きく変更されました。https://learnopengl.com/#!Advanced-OpenGL/Advanced-GLSL – MrKiwi

+0

@MrKiwiはい、それは大きく変わっていますが、私は何を指しているのですか? gl_FragColor、gl_ProjectViewMatrixなどを使わないのと同じように、現代的な同等性があります。代わりに、独自の制服と変数を作成します。 – SpicyWeenie

答えて

1

gl_FrontSecondaryColor、gl_FrontColor

これらは、ちょうど、頂点シェーダ出力です。彼らは決して特別ではない。

GL_COLOR、gl_SecondaryColor

これらは効果的にあなたのシェーダ内の条件付きロジックを実行する魔法のフラグメントシェーダものです。彼らは、前面/背面の顔のテストを行い、適切な種類の前面または背面の色を取得します。

両面レンダリングを行っている場合は、自分でのテストを行う必要があります。 VSは前と後ろの値を出力し、FSは両方を入力しますが、三角形の向きに応じて使い分けます。 built-in gl_FrontFace variableは、現在の顔が正面か背面かを示します。これを使用して、使用する入力値を選択します。

両面レンダリングを実行していない場合は...気にしません。あなたはVS出力とFS入力を持っています。

関連する問題

 関連する問題