3Dグラフィックプログラミングのフラグメントとは何ですか?


37

フラグメントシェーダーのフラグメントとは何ですか?ウィキペディアによると:

一般に、フラグメントは、ピクセルをシェーディングするために必要なデータに加えて、フラグメントがピクセルになるまで生き残るかどうかをテストするために必要なデータ(深度、アルファ、ステンシル、はさみ、ウィンドウIDなど)と考えることができます。

それはテクスチャ、頂点、または他の何かですか?

回答:


31

コンピューターグラフィックスでは、フラグメントとは、フレームバッファーに1ピクセル分の描画プリミティブを生成するために必要なデータです。

このデータには以下が含まれますが、これらに限定されません:

  • ラスター位置
  • 深さ
  • 補間された属性(色、テクスチャ座標など)
  • ステンシル
  • アルファ
  • ウィンドウID

シーンが描画されると、描画プリミティブはテクスチャ化され、既存のフレームバッファと結合されるフラグメントにラスタライズされます。フラグメントをフレームバッファーに既にあるデータと組み合わせる方法は、さまざまな設定によって異なります。典型的なケースでは、フラグメントが既にその場所にあるピクセルよりも遠くにある場合は破棄されます(深度バッファーによる)。既存のピクセルよりも近い場合、既に存在するピクセルを置き換えるか、アルファブレンディングが使用されている場合、ピクセルの色は、フラグメントの色とピクセルの既存の色の混合で置き換えられます。半透明のオブジェクトを描画します。

一般に、フラグメントは、ピクセルをシェーディングするために必要なデータに加えて、フラグメントがピクセルになるまで生き残るかどうかをテストするために必要なデータ(深度、アルファ、ステンシル、はさみ、ウィンドウIDなど)と考えることができます。

ウィキペディアから


6

フラグメントは、シェーディングしているピクセルの周りの3つの頂点の寄与から与えられる単純なデータです。

頂点シェーダーでは、頂点ごとにいくつかのデータ(色、テクスチャ座標など)を出力します。次に、フラグメントシェーダーで、ピクセルごとにそれらの値の加重平均を取得し、それを使用してピクセルの最終色を作成します。


前述のように、ピクセルと非表示バッファー上のその他すべてのデータ。
StarWeaver

4

頂点シェーダーが頂点に作用するのと同じように、フラグメント(またはピクセル)シェーダーはピクセルに作用します。


申し訳ありませんが、これは「ラスタライズ」という言葉と補間について言及せずに正しくありません。
ノタベン

特にアルファへの適用範囲、または他の多くの状況のいずれか、AAレンダーターゲットが関与しているマルチサンプリングする際、フラグメントとは区別される- -さらに悪いことには、ピクセルを言う私は投票ダウン私が担当者だったならば
jheriko

4

フラグメントシェーダーのフラグメントとは

言えるのは、フラグメントシェーダーの入力と出力を定義することだけです。

それが行われた/広すぎるので、直感的な視覚的な側面に焦点を当てます。

フラグメントはラスター出力です

OpenGL wikiによると:

フラグメントは、ラスタライザによって生成される値のコレクションです。

フラグメントシェーダー入力を生成するラスタライザーの後に来るため、これは理にかなっています。

そして、これはラスタライザ出力の視覚的表現です:

画像ソース

ラスタライザーの入力は3D三角形と視点であり、出力は画面に表示される可能性のあるピクセルのセットです(他のユーザーによってブロックされない場合)。

これらの小さな正方形(単一のプリクセルとしてエンコードされる)はそれぞれ三角形の一部であり、フラグメント断片の単なる別の名前です。


Downvoters、コンテンツを学習して改善できるように説明してください;
Ciro Santilli新疆改造中心法轮功六四事件

あなたの視覚的説明と混合した一番上の答えの情報が最善でしょう。
StarWeaver
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.