質問

頂点シェーダーとピクセルシェーダーとは

それらの違いは何ですか?どれがベストですか?

役に立ちましたか?

解決

A ピクセルシェーダーは、動作するようにプログラムできるGPU(グラフィックプロセッシングユニット)コンポーネントです。ピクセル単位で、ライティングやバンプマッピングなどを処理します。

A 頂点シェーダーもGPUコンポーネントであり、特定のアセンブリライクな言語を使用してプログラミングされています、ピクセルシェーダーに似ていますが、シーンジオメトリに方向付けられており、オブジェクトに漫画のようなシルエットエッジを追加するなどのことができます。

どちらも他より優れているわけではなく、それぞれに特定の用途があります。 DirectX 9以上をサポートする最新のグラフィックカードには、これらの機能が含まれています。

これらの使用方法をよりよく理解するために、Webには複数のリソースがあります。特に、NVidiaとATIは、このトピックに関するドキュメントの優れたリソースです。

他のヒント

DirectX 10およびOpenGL 3は、第3のタイプとしてジオメトリシェーダーを導入しました。

レンダリングパイプラインの順序-

頂点シェーダー-1点を取り、それを調整できます。複雑な**頂点ライティング計算を次のステージのセットアップとして使用したり、周囲のポイントをゆがめたりするために使用できます(ウォブル、スケールなど)。

結果の各プリミティブはに渡されます

ジオメトリシェーダー-変換された各プリミティブ(三角形など)を取得し、その上で計算を実行できます。これにより、必要に応じて新しいポイントを追加したり、削除したり、移動したりできます。これを使用して、単一のベースメッシュから詳細レベルを動的に追加または削除したり、ポイントに基づいて数学的なメッシュを作成したり(複雑なパーティクルシステムの場合)、その他の同様のタスクを実行できます。

結果の各プリミティブはスキャンラインに変換され、スパンがカバーする各ピクセルは

を通過します

ピクセルシェーダー(OpenGLのフラグメントシェーダー)-頂点シェーダーが渡すもの、バインドされたテクスチャ、およびユーザーが追加したデータに基づいて、画面上のピクセルの色を計算します。これは現在の画面をまったく読み取ることができず、そのピクセルが現在のプリミティブに対してどの色/透明度でなければならないかを計算します。

これらのピクセルは、現在の描画バッファー(画面、バックバッファー、テクスチャへのレンダリングなど)に配置されます

すべてのシェーダーは、ワールドビューマトリックスなどのグローバルデータにアクセスでき、開発者は単純な変数を渡して、照明やその他の目的に使用できます。シェーダーはアセンブラーに似た言語で処理されますが、最新のDirectXおよびOpenGLバージョンには、それぞれHLSLおよびGLSLと呼ばれる高レベルのc-like言語コンパイラが組み込まれています。 NVidiaには、両方のAPIで動作するCGと呼ばれるシェーダーコンパイラもあります。

[コメントに記載されているように、以前の誤った順序(Geometry-> Vertex-> Pixel)を反映するように編集されました。]

テッセレーションにDirectX 11で使用される3つの新しいシェーダーがあります。新しい完全なシェーダーの順序は、頂点->ハル->テッセレーション->ドメイン->ジオメトリ->ピクセルです。私はこれらの新しいものをまだ使用していませんので、それらを正確に説明する資格を感じません。

頂点シェーダーとピクセルシェーダーは、グラフィックパイプライン内で異なる機能を提供します。頂点シェーダーは、頂点関連データ(位置、法線、Texcoords)を取得および処理します。

Pixel(より正確にはFragment)シェーダーは、Vertexシェーダーで処理された値から補間された値を取得し、ピクセルフラグメントを生成します。ほとんどの「クール」はピクセルシェーダーで処理が行われます。ここで、テクスチャルックアップやライティングなどが行われます。

DirectX固有:

シェーダー:

固定レンダリングパイプラインで定義されていないオブジェクトに追加のグラフィカル機能を実装するプログラムのセット。 このため、ニーズに応じて独自のグラフィック効果を使用できます。つまり、定義済みの“修正済み” 操作。

HLSL:(高レベルシェーディング言語):

HLSLは、シェーダー(ピクセルシェーダー/頂点シェーダー)の実装に使用されるC ++のようなプログラミング言語です。

頂点シェーダー:

頂点シェーダーは、グラフィックカードのGPUで実行されるプログラムです。 各頂点で個別に動作します。これにより、頂点を操作する独自のカスタムアルゴリズムを記述できます。

ピクセルシェーダー:

ピクセルシェーダーは、グラフィックカードのGPUで実行されるプログラムです 各ピクセルのラスター化プロセス。個々のピクセルに直接アクセス/操作する機能を提供します。 このピクセルへの直接アクセスにより、マルチテクスチャリング、ピクセルごとの照明、被写界深度、クラウドシミュレーション、火災シミュレーション、高度なシャドーイングテクニックなど、さまざまな特殊効果を実現できます。

注:頂点シェーダーとピクセルシェーダー(プログラム)は、使用する前に特定のバージョンのコンパイラーを使用してコンパイルする必要があります。コンパイルは、ファイル名、メインエントリ関数などの必須パラメーターを使用してAPIを呼び出すのと同じように実行できます。

開発に関しては、ピクセルシェーダーは各ピクセルを個別に操作する小さなプログラムです。同様に、頂点シェーダーは各頂点を個別に操作します。

これらを使用して、特殊効果、影、照明などを作成できます。

各ピクセル/頂点は個別に動作するため、これらのシェーダーは、最新のグラフィックプロセッサの高度な並列アーキテクチャに適しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top