Microsoft DirectX 8.0 (Visual Basic)

頂点シェーダとは

頂点シェーダは、頂点のロードと処理を制御する。Microsoft® Direct3D® for Microsoft DirectX® 8.0 では、プログラム可能な頂点処理および固定機能頂点処理の 2 種類の頂点処理をサポートしている。DirectX 8.0 のドキュメントでは、「頂点シェーダ」というと主にプログラム可能なモードに適用されるが、頂点シェーダ API 機構では、どちらのタイプも使用できる。頂点シェーダは、作成の際に、プログラム可能な頂点処理を使用するかまたは固定機能頂点処理を使用するか定義される。作成後は、頂点シェーダ自身のハンドルによって参照される。頂点シェーダを編集することはできない。頂点シェーダを変更するには、いったん破棄して作り直す必要がある。

各頂点シェーダには関数が 1 つ含まれており、これによって各頂点に適用する処理が定義される。また宣言も 1 つ含まれており、これによって、入力データ ストリーム内の頂点要素がシェーダによってどのように使用されるかなど、シェーダへの入力が定義される。

頂点シェーダによって実行される頂点処理には、単一の頂点に適用される処理のみが含まれる。頂点処理手順によって得られる出力は、個々の頂点ごとに定義され、それぞれに、クリップ空間位置 (x,y,z,w)、色、テクスチャ座標、フォグ強度、およびポイント サイズ情報が含まれる。これらの位置座標からビューポートへの射影とマッピング、複数の頂点からプリミティブへのアセンブル、およびプリミティブのクリッピングは、後の処理段階によって実行され、頂点シェーダの制御下にはない。

固定機能頂点処理は、トランスフォーム、ライティング、頂点ブレンディング、テクスチャ座標生成を含め、Direct3D for DirectX 7.0 と同じ機能を提供する。プログラム可能な頂点シェーダでは、頂点に適用される処理がシェーダ内で定義されるのに対し、固定機能頂点処理は、ライトやトランスフォームなどを設定する Direct3DDevice8 のメソッドによって設定されたデバイス ステートによって制御される。しかし、機能が固定され共有されている場合でも、宣言は変更できるため、複数の固定機能頂点シェーダを使用することも有用である。これにより、固定機能シェーダに、異なるマルチストリーム入力のレイアウトを提供することができる。

固定機能頂点処理の入力頂点要素のセマンティクスは固定されている。このため、宣言タグによって、入力頂点要素が、座標、法線、色などとして指定される。固定機能頂点シェーダの頂点出力には常に、ピクセル処理のための現在のデバイス ステート設定で必要とされる、座標、ディフューズ色、スペキュラ色、複数のテクスチャ座標が含まれる。

プログラム可能な頂点シェーダには、各頂点に適用される命令の配列によって定義された関数が 1 つ含まれる。入力頂点要素からプログラム可能な頂点シェーダの頂点入力レジスタへのマッピングは、シェーダ宣言で定義されるが、入力頂点要素は、その使用について特定のセマンティクスを持たない。入力頂点要素の解釈は、シェーダの命令に従う。プログラム可能な頂点シェーダの頂点出力は、シェーダ関数内の命令によって明示的に書き込まれる。

Direct3DX 頂点シェーダ アセンブラの詳細については、「頂点シェーダ アセンブラ リファレンス」を参照すること。