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