vs_3_0

プログラム可能な頂点シェーダーは、頂点データを操作する一連の命令で構成されます。 ALU との間でデータの転送を登録します。 追加のコントロールを適用して、命令、結果、または書き込まれるデータを変更できます。

頂点シェーダー バージョン vs_3_0では、vs_2_xでサポートされているフィーチャ セットが拡張されます。 キャップを設定する必要があるvs_2_Xの各機能は、キャップを必要とせずにvs_3_0で使用できます。

新機能

頂点シェーダー バージョン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 がサポートされている場合は、ハードウェア (少なくとも) で次の大文字がサポートされます。

キャップ 機能
シェーダーキャップ
  • DynamicFlowControlDepth は 24 です
  • NumTemps は 32 です
  • StaticFlowControlDepth は 4 です
  • プリディケーションがサポートされています。
GuardBandLeft、GuardBandTop、GuardBandRight、GuardBandBottom 8 K
VertexShaderVersion 3_0
MaxVertexShaderConst 256
MaxVertexShader30InstructionSlots 512
霧のサポート D3DPRASTERCAPS_FOGVERTEX
VertexTextureFilterCaps
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET 頂点宣言内の頂点要素は、同じストリーム オフセットを共有できます。
頂点の形式
  • D3DDECLTYPE_UBYTE4
  • D3DDECLTYPE_UBYTE4N
  • D3DDECLTYPE_SHORT2N
  • D3DDECLTYPE_SHORT4N
  • D3DDECLTYPE_FLOAT16_2
  • D3DDECLTYPE_FLOAT16_4

 

頂点シェーダー