プログラム可能な頂点シェーダーは、頂点データを操作する命令のセットで構成されます。 ALU との間でデータの転送を登録します。 追加の制御を適用して、命令、結果、または書き込まれるデータを変更できます。
頂点シェーダー バージョン vs_3_0は、vs_2_xでサポートされている機能セットを拡張します。 キャップを設定する必要があるvs_2_Xの各機能は、キャップを必要とせずにvs_3_0で使用できます。
- 手順 - vs_3_0には、使用可能な手順の一覧が含まれています。
- レジスタ - vs_3_0頂点シェーダー ALU で使用されるさまざまな種類のレジスタを一覧表示します。
- 頂点シェーダー レジスタ修飾子 を使用して、命令の動作方法を変更します。
- 頂点シェーダー ソース レジスタ修飾子 、命令を実行する前にソース レジスタ データを変更。
- ソース レジスタ スウィズリング 、読み取り、コピー、または書き込みされるレジスタ コンポーネントを追加で制御できます。
- 宛先レジスタ マスク は、書き込まれる宛先レジスタのコンポーネントを決定します。
新機能
次のセクションでは、頂点シェーダー バージョンvs_3_0の新機能を示します。
レジスタのインデックス作成
以前のシェーダー モデルでは、インデックスを作成できるのは定数レジスタ バンクのみです。 このモデルでは、ループ カウンター レジスタ (aL) を使用して、次のレジスタ バンクのインデックスを作成できます。
- 入力レジスタ (v#)
- 出力レジスタ (o#)
頂点テクスチャ
このシェーダー モデルでは、texldl を使用した頂点シェーダーでのテクスチャ参照がサポートされています。 頂点エンジンには、(ディスプレイスメント マップ サンプラーとピクセル エンジンのテクスチャ サンプラーとは異なる) 4 つのテクスチャ サンプラー ステージがあり、これらのステージで設定されたテクスチャをサンプリングするために使用できます。 vs_3_0 (DirectX HLSL) の頂点テクスチャのを参照してください。
頂点ストリームの頻度
この機能を使用すると、入力レジスタのサブセットを頂点ごとに 1 回とは異なる速度で初期化できます。 「インデックスのないジオメトリ を描画するを参照してください。
シェーダー出力
vs_2_0と同様に、シェーダーの出力は静的フロー制御によって異なる場合があります。 動的分岐では、シェーダーの出力が頂点ごとに異なる可能性があるため、注意してください。 これにより、異なるハードウェアで予期しない結果が生成されます。
動的フロー制御
すべての動的フロー制御命令がサポートされています。 許容される入れ子の深さの最大値は 24 です。 (詳細については、「フロー制御の入れ子の制限」を参照してください)。
一時レジスタ
合計 32 個の一時レジスタ (r#) がサポートされています。
静的フロー制御
ループの最大入れ子深度 (rep と/rep) と は 4 です。 呼び出しの最大入れ子深度 (callnz bool -/callnz pred と/callnz pred - vs は 4 です。 bool - vs の場合、の場合、許容される入れ子の深さの最大値は 24 です。 (詳細については、「フロー制御の入れ子の制限」を参照してください)。
プレディケーション
命令の事前設定がサポートされています。 setp_comp - と を使用して述語レジスタを設定します。
命令数
各頂点シェーダーは、512 から、D3DCAPS9の MaxVertexShader30InstructionSlots 内のスロットの数までの任意の場所で許可されます。 ループ/担当者のサポートにより、実行される命令の数がはるかに多くなる可能性があります。ただし、これは、少なくとも0xFFFFする必要がある D3DCAPS9 で MaxVShaderInstructionsExecuted によって制限されます。
デバイスキャップ
頂点シェーダー 3_0 がサポートされている場合は、ハードウェア (少なくとも) で次のキャップがサポートされます。
帽子 | 力 |
---|---|
シェーダーキャップ |
|
GuardBandLeft、GuardBandTop、GuardBandRight、GuardBandBottom | 8K |
VertexShaderVersion | 3_0 |
MaxVertexShaderConst | 256 |
MaxVertexShader30InstructionSlots | 512 |
霧のサポート | D3DPRASTERCAPS_FOGVERTEX |
VertexTextureFilterCaps | |
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET | 頂点宣言内の頂点要素は、同じストリーム オフセットを共有できます。 |
頂点の形式 |
|
関連トピック
-
頂点シェーダー の