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)

著色器模型 5 元件 (DirectX HLSL)