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 在頂點著色器中查閱紋理。 頂點引擎有四個紋理取樣器階段 (與位移地圖取樣器不同,圖元引擎中的紋理取樣器) 可用來取樣這些階段設定的紋理。 請參閱 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,硬體 (至少支援下列上限) :
筆蓋 | 功能 |
---|---|
著色器端點 |
|
GuardBandLeft、GuardBandTop、GuardBandRight、GuardBandBottom | 8K |
VertexShaderVersion | 3_0 |
MaxVertexShaderConst | 256 |
MaxVertexShader30InstructionSlots | 512 |
水氣支援 | D3DPRASTERCAPS_FOGVERTEX |
VertexTextureFilterCaps | |
D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET | 頂點宣告中的頂點元素可以共用相同的資料流程位移。 |
頂點格式 |
|
相關主題