mx_ifgreatereq
mx_ifgreatereq
MaterialX 风格的条件选择节点:当 value1 ≥ value2 时返回 in1,否则返回 in2;实现为 value1.greaterThanEqual(value2).mix(in1, in2)。
核心优势
用单一节点表达阈值式条件分支,无需显式 if/cond;支持标量与向量逐分量选择,映射到高效的 GPU 逻辑与混合运算。
常见用途
基于高度/法线等阈值在两种外观间硬切换(如地表与积雪)。
用遮罩或噪声阈值进行分层材质切换或绘制区域开关。
采用“≥”比较提升边界稳定性,减少临界闪烁。
如何调整
通过改变 value2 来移动阈值分界;将 in1/in2 替换为纹理或完整节点网络即可在两种材质/外观间切换。若需严格“>”而非“≥”,可使用对应的 mx_ifgreater(若存在)或以 value1.greaterThan(value2).mix(in1, in2) 自行组合。
代码示例
1
2<Canvas>
3 <mesh>
4 <sphereGeometry args={[0.5, 64, 64]} />
5 <meshStandardNodeMaterial
6 // y ≥ 0 用暖色,否则用冷色
7 colorNode={mx_ifgreatereq(
8 positionWorld.y,
9 float(0.0),
10 color(0xff8844),
11 color(0x4488ff)
12 )}
13 />
14 </mesh>
15</Canvas>
16