マニュアル教える拡張マジック・グラフィックス・エンジニア(パート8)| Yiziyiziは、OpenGLのチュートリアルをノック

照明の最後のチュートリアルでは、コンテンツは、シェーダ(シェーダ)、GLSL(OpenGLのシェーディング言語)については、より複雑になります。グラフィックスとの接触で初めて子供用の靴のために、それはよりあいまいかもしれません。そして、VSの下にある環境に勝つ、生徒の発達マック、このチュートリアルシェーダ関連のコンテンツに注意を払うが、それはMacがシェーダをサポートしていないことを意味するものではありません、単にいくつかの環境を設定する必要があり、GoogleはBaiduのことができます。

  1. (シェーダ)シェーダ
    6.1シェーダの分類は、
    パイプラインマップ、それの最初の講義を覚えていますか?ラスタライズと呼ばれる言葉がありますが、覚えていますか?頂点が操作されるラスタライズ頂点変換、照明及び投影頂点を変換し、前に実行され、対応するシェーダはまた、頂点シェーダ(頂点シェーダ)と呼ばれます。ラスタライズ、フラグメント処理後、テクスチャマッピング動作もシェーダー対応するフラグメントシェーダ(フラグメントシェーダ)と呼ばれる断片です。もちろんなど細分化シェーダコンピュートシェーダなど、他のシェーダがあるでしょう、あなたが知って興味があるかもしれません。
    マニュアル教える拡張マジック・グラフィックス・エンジニア(パート8)| Yiziyiziは、OpenGLのチュートリアルをノック
    6.2 GLSL概要
    まず、GLSLのいくつかの変数の型。GLSLは、パラメータの4種類があります。頂点の属性(属性)、同じ変数(制服)は、誰かがvolatile変数(変化)が呼ばれているが、ここでは変数に/それを呼び出します。前に長いバージョンをvaring、ほとんどが今で/アウトに変更されています。最後に、変数は定数(定数)です。

頂点座標、法線、テクスチャ座標、頂点色:変数のみ頂点の頂点シェーダで使用されている頂点属性(属性)は、のようないくつかのデータを表します。

それは、外部アプリケーション・プログラム変数(頂点および断片)に渡される同一の変数(ユニフォーム)、シェーダはその値を変更するグローバル変数、および読み取り専用属性としてではなく、シェーダによって理解することができます。

揮発性変数は(IN / OUT)、モジュール間のインターフェースに対応する次のシェーダシェーダに一方から転送されます。我々は頂点シェーダから変数うちで上記の場合には、フラグメントシェーダ変数になります。もちろん、頂点属性(属性)は、頂点シェーダ変数に変数として使用することができます。

定数変数(定数)、これは、より多くのことを行うためにそれを導入し、そしてあなたが意味を理解一定でなかったでしょう。

スタイルGLSL言語を見て変数の型をご覧ください。実際には、GLSLの感覚、より多くのC言語のようなグラフィックス用の拡張言語です。例えば、他のタイプbvec4 int型、ivec2、ivec3、ivec4、フロート、VEC2、vec3、vec4、ブール値、bvec2、bvec3は、あります。ベクトル要素をすることによって得ることができる「」、そのようなc1.rgba = c2.abgr。もちろん、当然のようなない文字列型などの異なる部品、ない列挙で列挙があり、およびNOポインタと配列は一次元アレイを使用することはできません。

ここで廃棄されたGLSL操作破棄、断片です。それは、現在のフラグメントを破棄フラグメントシェーダで使用され、効果は次のとおりです。
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート8)| Yiziyiziは、OpenGLのチュートリアルをノック
シェーダの他のタイプは、そのような細分化シェーダ(テッセレーションシェーダ)、ジオメトリシェーダ(ジオメトリシェーダ)などがあり、私達は今述べたが、我々材料はそこシェーダ上のチュートリアルの特別なセットを作るための時間かもしれないが、それはこれらのシェーダの設計となり、他が関与することはないだろう、頂点およびフラグメントシェーダを言及します。私たちは、フローチャートシェーダそれを見て:
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート8)| Yiziyiziは、OpenGLのチュートリアルをノック
頂点シェーダから始め、話題に引き継ぎました。

6.3シェーダコード例の
頂点シェーダ(頂点シェーダ)、頂点、法線変換、正規通常、頂点ライティング計算を、形質転換され、頂点のテクスチャ座標を取得し、フラグメントシェーダに配信します。

使用内蔵バーテックスシェーダ主な変数は以下のとおりです。

vec4 gl_Vertex
vec3 gl_Normal
vec4 GL_COLOR
vec4 gl_MultiTexCoord0
MAT4 gl_ModelViewMatrix
MAT4 gl_ProjectionMatrix
MAT4 gl_ModelViewProjectionMatrix
MAT4 gl_NormalMatrix(これはMV行列の逆行列の転置です)

vec4 gl_Position

フラグメントシェーダ(フラグメントシェーダ)、色、テクスチャマッピング、ライティングフラグメント処理動作、並びに色及び融合断片とドロップ操作を計算します。

使用内蔵フラグメントシェーダ主な変数は以下のとおりです。

vec4 gl_FragColor

あなたは、単純な頂点シェーダとフラグメントシェーダを書くことができるように:
マニュアル教える拡張マジック・グラフィックス・エンジニア(パート8)| Yiziyiziは、OpenGLのチュートリアルをノック
そこgl_ModelViewProjectionMatrixを頂点シェーダでgl_Vertex、このような言葉は、実際には、分離することができ、書かgl_ProjectionMatrix gl_ModelViewMatrix 各頂点の射影行列を変更する場合gl_Vertexは、しかし、モデルビューで乗算されますマトリックスは、各頂点に変更されないので、明らかに時間の無駄であるマトリックス。だから、GLSLはgl_ModelViewProjectionMatrixは、上記の二つの行列の積であることを、いくつかの派生行列を提供するので、彼らはgl_ModelViewProjectionMatrix書い gl_Vertexを。

おすすめ

転載: blog.51cto.com/14528075/2438276
おすすめ