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) | 否 |