fcall (sm5 - asm)
介面函式呼叫。
fcall fp#[arrayIndex][callSite] |
---|
項目 | 描述 |
---|---|
Fp# |
[in]函式指標。 |
arrayIndex |
[in] 選用。 指定函式指標陣列中的位移。 如果 fp# 未宣告為可編制索引,此參數必須是常值不帶正負號的整數。 否則,arrayIndex 可以是著色器暫存器的表單常值基底 + 位移。 例如,fcall fp1[r1.w + 0][0] 。 |
callSite |
[in] 選用。 在選取的函式資料表中,選取要執行的函式主體 fb# 的常值不帶正負號整數位移。 |
備註
fp#[arrayIndex][] 會解析為特定函式資料表,從 fp#宣告中列出的函式資料表選擇以外的 API 選取。
fp#和arrayIndex中的 # 總和會選取函式資料表。 例如,如果介面宣告為 fp4[4][3] (陣列大小為 4) ,則下列 fcall s 相等: fcallfp4[2][3] 和 fp5[1][3],因為 4+2 = 5+1。
Restrictions
如果 arrayIndex 使用動態索引,如果 arrayIndex 在連續的著色器調用上發散,可能會在 lockstep 中執行,則行為是未定義的。 HLSL 編譯器會嘗試不允許這種情況。
連續的調用可能會因為流程式控制制而處於非作用中狀態,因為它不會中斷鎖定步驟執行。
如果fp# + arrayIndex指定超出界限的索引,則行為是未定義的。
針對此處所述的未定義案例,這表示目前 D3D 裝置的行為變成未定義,包括裝置遺失的可能性。 不過,目前 D3D 裝置以外的記憶體將不會以程式碼的形式存取或執行。
本指示適用于下列著色器階段:
頂點 | 船體 | 網域 | 幾何形狀 | 像素 | 計算 |
---|---|---|---|---|---|
X | X | X | X | X | X |
最小著色器模型
下列著色器模型支援此指示:
著色器模型 | 支援 |
---|---|
著色器模型 5 | 是 |
著色器模型 4.1 | 否 |
著色器模型 4 | 否 |
著色器模型 3 (DirectX HLSL) | 否 |
著色器模型 2 (DirectX HLSL) | 否 |
著色器模型 1 (DirectX HLSL) | 否 |