共用方式為


vs_3_0

可程式化的頂點著色器是由一組在頂點資料上運作的指令所組成。 註冊傳入和移出 ALU 的資料。 您可以套用其他控制項來修改指令、結果或寫出哪些資料。

頂點著色器版本vs_3_0擴充vs_2_x所支援的功能集。 vs_2_X中需要設定上限的每個功能,都可在vs_3_0中使用,而不需要上限。

新功能

頂點著色器版本的新功能vs_3_0列在下列各節中。

編制暫存器索引

在先前的著色器模型中,只能編制常數暫存器銀行的索引。 在此模型中,可以使用迴圈計數器暫存器 (aL) 來編制下列暫存器索引:

  • 輸入暫存器 (v#)
  • 輸出暫存器 (o#)

頂點紋理

此著色器模型支援使用 texldl 在頂點著色器中查閱紋理。 頂點引擎有四個紋理取樣器階段 (與位移地圖取樣器不同,圖元引擎中的紋理取樣器) 可用來取樣這些階段設定的紋理。 請參閱 vs_3_0 (DirectX HLSL) 中的頂點紋理

頂點資料流程頻率

這項功能可讓輸入暫存器子集以不同于每個頂點一次的速率初始化。 請參閱 繪製非索引幾何

著色器輸出

與vs_2_0類似,著色器的輸出可能會隨著靜態流程式控制制而有所不同。 請小心使用動態分支,因為這可能會導致著色器輸出因每個頂點而有所不同。 這會在不同的硬體上產生無法預期的結果。

動態流程式控制制

支援所有動態流程式控制制指令。 允許的巢狀深度值上限為 24。 (如需詳細資訊,請參閱 流程式控制制巢狀限制 。)

暫存暫存器

總共支援 32 個暫存暫存器, (r#) 。

靜態流程式控制制

迴圈的巢狀深度上限- vs/rep - vs為 4。 呼叫的巢狀深度上限- vs/callnz bool - vs/callnz pred - vs為 4。 若 為 bool - vs,則允許的最大巢狀深度值為 24。 (如需詳細資訊,請參閱 流程式控制制巢狀限制 。)

預測

支援指示述詞。 使用 setp_comp - 與 設定述詞暫存器。

指令計數

每個頂點著色器允許從 512 到 D3DCAPS9中 MaxVertexShader30InstructionSlots 中的插槽數目。 因為迴圈/rep 支援,所以執行的指令數目可能會更高;不過,這是由 D3DCAPS9 中 MaxVShaderInstructionsExecuted 所限制,至少應0xFFFF。

裝置上限

如果支援頂點著色器 3_0,硬體 (至少支援下列上限) :

筆蓋 功能
著色器端點
  • DynamicFlowControlDepth 為 24
  • NumTemps 為 32
  • StaticFlowControlDepth 為 4
  • 支援預先分割。
GuardBandLeft、GuardBandTop、GuardBandRight、GuardBandBottom 8K
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

 

頂點著色器