Cgに関するチュートリアルを読んだことがありますが、それでも私には分かりません。 頂点シェーダーとフラグメントシェーダーの違いは何ですか? そして、どちらの状況が他の状況より適していますか?頂点シェーダとフラグメントシェーダ
答えて
フラグメントシェーダはピクセルシェーダと同じです。
主な違いの1つは、頂点シェーダが頂点の属性を操作できることです。これはポリゴンの角の点です。
一方、フラグメントシェーダは、頂点間のピクセルがどのように見えるかを処理します。それらは、特定の規則に従って定義された頂点間で補間されます。
たとえば、ポリゴンを完全に赤くするには、すべての頂点を赤く定義します。頂点間に勾配のような特定のエフェクトが必要な場合は、フラグメントシェーダで行う必要があります。
別の言い方をすれば:
は、頂点シェーダは、私が思うの変換とポリゴンクリッピング座標のどこかのモデルの間で、グラフィックパイプラインの初期段階の一部です。その時点では、実際にはまだ何も行われていません。
ただし、フラグメント/ピクセルシェーダは、ラスタライズステップの一部であり、画像が計算され、頂点間のピクセルが塗りつぶされます(「色付き」)。
ただ、ここでは、グラフィックス・パイプラインについて読み、すべては自分自身を明らかにする: http://en.wikipedia.org/wiki/Graphics_pipeline
頂点シェーダはすべての頂点で実行され、フラグメントシェーダはすべてのピクセルで実行されます。フラグメントシェーダは、頂点シェーダの後に適用されます。シェーダGPUパイプラインの詳細link text
3Dハードウェアを経由して画像をレンダリングでは、一般的に(ポイント、ポリゴン、ライン)これらは頂点によって定義されたメッシュを持っています。モデル内のモーションや海洋の波に対して個別に頂点を操作するには、頂点シェーダを使用できます。これらの頂点は、テクスチャによって割り当てられた静的な色または色を持ち、フラグメントシェーダを使用する頂点の色を操作できます。パイプラインの終わりに、ビューが画面に表示されるときに、フラグメントシェーダを使用することもできます。
"モデル内の動きや海洋の波に対して個別に頂点を操作する" - これが当てはまるかもしれないが、頂点シェーダとピクセル/フラグメントシェーダの後ろにあるジオメトリシェーダのほうが適切です。 – Placeable
頂点変換は、グラフィックスハードウェア・パイプラインの最初の処理段階です。頂点変換は、各頂点に対して一連の数学演算を実行します。これらの操作には、ラスタライザで使用するための頂点位置をスクリーン位置に変換すること、テクスチャのためのテクスチャ座標を生成すること、頂点を照明してその色を決定することが含まれます。
ラスタライズの結果は、一連のピクセル位置と一連のフラグメントです。プリミティブに含まれる頂点の数と、ラスタライズされるときに生成されるフラグメントの数との間には関係がありません。たとえば、3つの頂点だけで構成される三角形は、画面全体を占め、数百万のフラグメントを生成する可能性があります。
以前は、フラグメントが何であるかを正確に把握していないと、フラグメントをピクセルとして考えるように言われました。しかし、この時点では、フラグメントとピクセルの区別が重要になります。画素という用語は、「絵素」の略語である。ピクセルは、色、深さ、およびその位置に関連する他の任意の値など、特定の位置にあるフレームバッファの内容を表します。フラグメントは、特定のピクセルを更新する可能性のある状態です。
用語ラスタライズは、三角形のような各幾何プリミティブを、プリミティブがカバーする各ピクセルのピクセルサイズのフラグメントに分割するために使用されます。フラグメントには、ピクセル位置、深さ値、補間パラメータのセットがあります。これらの様々な補間されたパラメータは、フラグメントを生成するために使用された特定の幾何プリミティブを構成する変換された頂点から導出されます。フラグメントは、色、二次(鏡面)カラー、および一つ以上のテクスチャ座標セットとして考えることができます。 「潜在的なピクセル」。フラグメントが様々なラスタライズテストに合格した場合(ラスタオペレーションフレームバッファ内のピクセルを更新する。
は、頂点シェーダ及びフラグメントシェーダの用途は、固定パイプライン頂点シェーダをレンダリングrendering.In任意の3-Dは、断片/ピクセルシェーダの前に適用されない3次元実装の両方の特徴です。
頂点シェーダは、固定されたポリゴンメッシュがあり、それをシェーダで変形したい場合、頂点シェーダで実装する必要があります。頂点の物理的な変更は頂点シェーダで行うことができます。
フラグメントシェーダは頂点シェーダの出力を取り込み、ピクセルの深度値を割り当てます。これらの操作の後、フレームセグメントは画面に表示するためにフレームバッファを送ります。
例えば、ライティング計算のようないくつかの操作は、頂点シェーダとフリーグラフシェーダで実行できます。変形シェーダは頂点シェーダよりも良い結果を提供します。
- 1. 頂点シェーダとフラグメントシェーダから法線を削除します
- 2. 頂点シェーダ対頂点
- 3. 頂点シェーダとフラグメントシェーダのgl_Colorとgl_FrontColorの関係は何ですか
- 4. GLSL 1.0.0 - 頂点シェーダとフラグメントシェーダで "Varying"を使用するときの問題
- 5. 頂点シェーダのテクスチャルックアップ
- 6. テクスチャデータを頂点シェーダの頂点データとして解釈する
- 7. Unity/CG:頂点シェーダのスケールオブジェクト
- 8. 再利用頂点シェーダに
- 9. 頂点シェーダの問題
- 10. 頂点シェーダの属性パラメータ
- 11. 頂点シェーダはどのようにカラー情報をフラグメントシェーダに渡しますか?
- 12. 頂点シェーダ内の変数のログ値
- 13. 頂点シェーダのコンパイルエラー、エラーなし
- 14. シェーダの頂点を無効/スキップ
- 15. OpenGL ES(2.0)シェーディング言語:ブール値を頂点シェーダに入力してフラグメントシェーダに渡す方法は?
- 16. 頂点シェーダ(GLSL)の浮動小数点の変更
- 17. OpenGLの頂点シェーダ変換して出力
- 18. OpenGLで非常に奇妙な頂点シェーダの動作
- 19. テクスチャの4x4行列を頂点シェーダに送る方法は?
- 20. 頂点シェーダをOpenGLのgpuから元に戻す
- 21. OpenGLで頂点シェーダにデータを送る方法は?
- 22. 頂点シェーダを逆さまに反転する(GLES)
- 23. シェーダから頂点宣言を読み取る方法は?
- 24. Perspecitveは頂点シェーダで分割しますか?
- 25. OpenGL ES頂点シェーダは関数でコンパイルされません
- 26. 骨格アニメーションの頂点シェーダのパフォーマンスに関する問題
- 27. 頂点シェーダ内のポリゴン内のすべての頂点にアクセスできますか?
- 28. 頂点シェーダから頂点属性インデックスをバインドできますか? OpenGLのFBOのwikiページ
- 29. 頂点の頂点を頂点で4.2で検証する
- 30. GLSLのフラグメントシェーダでフラグメントの最初の頂点ノーマルを取得する方法
ありがとう、非常に明確かつ簡潔な説明。私は今それを得ると思います。 – adivasile
実際には、頂点の属性を赤に設定する必要はありません。カラー/ラスタライズが属するフラグメントシェーダで、簡単に、おそらくより賢く赤に設定することができます。 – RichieHH