mx_ifequal
mx_ifequal
基于相等判断的无分支选择节点:当 value1 与 value2 相等时返回 in2,否则返回 in1(注意:返回顺序与名称直觉相反)。
核心优势
无条件分支(branchless),以比较结果作为掩码驱动 mix;对标量、向量、颜色等类型通用;适合从 MaterialX 迁移的条件选择场景。
常见用途
按实例/索引在两种颜色或两套材质参数间切换。
在两级粗糙度、金属度或发光强度之间做条件选择。
基于摄像机索引(如左右眼)或自定义 ID 的快速分配。
如何调整
通过改变 value1/value2 的比较对象来控制条件;记住“相等时取 in2,不相等取 in1”。对向量比较时为逐分量选择。若希望“相等取 in1”的语义,可交换 in1/in2 的传参,或改用 value1.equal(value2).cond( in1, in2 )。
代码示例
1// 当 cameraIndex 等于 1 时使用绿色,否则使用红色(相等→选 in2)
2const col = mx_ifequal( cameraIndex, 1u, color( 0xff4444 ), color( 0x44ff44 ) );
3material.colorNode = col;