vs_2_x
プログラミング可能な頂点シェーダーは、頂点データを操作する命令のセットで構成されます。 ALU との間で転送データを登録します。 追加のコントロールを適用して、命令、結果、または書き込まれるデータを変更できます。
頂点シェーダー バージョン vs_2_xは、vs_2_0でサポートされているフィーチャ セットを拡張します。 各追加機能は、D3DVS20CAPS 内の D3DCAPS9 構造体の対応するキャップで表されます。 これらのキャップで表される拡張フィーチャのいずれかを使用するには、頂点シェーダーのバージョンをvs_2_xとして指定する必要があります。
- 手順 - vs_2_x には、使用可能な手順の一覧が含まれています。
- レジスタ - vs_2_x 頂点シェーダー ALU によって使用されるさまざまな種類のレジスタが一覧表示されます。
- 頂点シェーダー レジスタ修飾子 は、命令の動作方法を変更するために使用されます。
- 頂点シェーダー ソース レジスタ修飾子は、命令の 実行前にソース レジスタ データを変更します。
- ソース レジスタ Swizzling を使用すると、読み取り、コピー、または書き込みされるレジスタ コンポーネントを追加で制御できます。
- 宛先レジスタ マスク は、書き込まれる宛先レジスタのコンポーネントを決定します。
新機能
新機能は次のとおりです。
動的フロー制御
D3DVS20CAPS> 0 の場合は、次の動的フロー制御命令がサポートされます。
D3DVS20CAPS も設定されている場合は、次の追加フロー制御命令がサポートされます。
動的フロー制御の深さの値の範囲は 0 から 24 で、動的フロー制御命令の入れ子の深さと同じです (詳細については、「 フロー制御の入れ子の制限 」を参照してください)。 この上限が 0 の場合、デバイスは動的フロー制御命令をサポートしません。
一時レジスタの数
D3DVS20CAPS は、デバイスでサポートされている 一時レジスタの数を表します。 この上限の値の範囲は 12 から 32 です。
静的フロー制御の入れ子の深さ
D3DVS20CAPS は、ループ - vs rep - vs/ and call- vscall - vscallnz bool - vs//if bool - vs. loop - vs/rep - vs instructions の 2 種類の静的フロー制御命令の入れ子の深さを表します。 個別に、call - vs/callnz bool - vs instructions は D3DVS20CAPS まで入れ子にすることができます。 D3DVS20CAPS も設定されている場合、 callnz pred - vs は、呼び出しの入れ子の深さ (vs/callnz bool - vs/if bool - vs) にカウントされます (詳細については、「 フロー制御の入れ子の制限 」を参照してください)。
プレディケーション
D3DVS20CAPS が設定されている場合、デバイスは setp_comp ( と 命令の割り当て) をサポートします。 D3DVS20CAPS も 0 より大きい場合は、次の追加の動的フロー制御命令がサポートされます。
命令数
各頂点シェーダーには、最大 256 個の命令を格納できます。 実行される命令の数ははるかに多くなる可能性があり (ループ/担当者のサポートのため)、 D3DCAPS9 によって上限が設定されます。これは少なくとも0xFFFFである必要があります。
関連トピック