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) ,则以下 fcalls 等效:fcall fp4[2][3] 和 fp5[1][3],因为 4+2 = 5+1。

限制

  • 如果 arrayIndex 使用动态索引,则 当 arrayIndex 在相邻着色器调用上发生分歧(可能以锁定步骤执行)时,行为将未定义。 HLSL 编译器将尝试禁止这种情况。

    由于流控制,相邻调用可能处于非活动状态,因为它不会中断锁步执行。

  • 如果 fp# + arrayIndex 指定了超出边界的索引,则行为未定义。

  • 对于此处所述的未定义情况,这意味着当前 D3D 设备的行为变得未定义,包括设备丢失的可能性。 但是,当前 D3D 设备外部的任何内存都不会作为代码访问或执行。

此指令适用于以下着色器阶段:

顶点 外壳 Geometry 像素 计算
X x x x x x

最小着色器模型

以下着色器模型中支持此指令:

着色器模型 支持
着色器模型 5
着色器模型 4.1
着色器模型 4
着色器模型 3 (DirectX HLSL)
着色器模型 2 (DirectX HLSL)
着色器模型 1 (DirectX HLSL)

着色器模型 5 程序集 (DirectX HLSL)