如果 (sm4 - asm)

基于逻辑或结果的分支。

if{_z|_nz} src0.select_component
说明
src0
[in]包含要测试条件的组件。

备注

为了方便起见,令牌格式包含着色器中相应 endif 指令的偏移量。

以下示例演示如何使用此指令。

                if_z r0.x // if all bits in r0.x are zero
                   ...
                else // (optional)
                   ...
                endif
                if_nz r1.x // if any bit in r0.x is nonzero
                   ...
                else // (optional)
                   ...
                endif

限制

  • 如果 4 个分量向量) 必须使用单个分量选择器,则源操作数 (。
  • src0 提供的 32 位寄存器在位级别进行测试。 如果任一位为非零位, 则if_z 为 true。 如果所有位均为零, 则if_nz 为 true。
  • 每个子例程 (和main) ,流控制块最多可嵌套 64 深。 HLSL 编译器不会生成超出此限制的子例程。 未定义每个子例程) 超过 64 个级别深 (的控制流指令的行为。

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

顶点着色器 几何着色器 像素着色器
x x x

最小着色器模型

以下着色器模型中支持此函数。

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

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