mx_subtract
mx_subtract
MaterialX 兼容的减法节点包装器:返回 in1 − in2;若未提供 in2 则默认为 0。
核心优势
命名与 MaterialX 对齐、与 TSL 基础数学 sub 等价;支持 float/vec2/vec3/vec4,标量会自动广播到向量分量,表达清晰、可读性强。
常见用途
从遮罩/噪声中减去阈值以形成硬/软边界。
对 UV/坐标做相对偏移(如 uv − time·speed)。
作为差分构件(A − B)用于对比度或边缘强化。
如何调整
通过改变 in1、in2 即可;默认 in2=0(相当于直通 in1)。与 mul、abs、pow 等节点组合可用作阈值、偏移或差分强化;当类型为向量 − 标量时将自动广播。
代码示例
1
2// 1) 标量 − 标量:做淡入
3const fade = mx_subtract( float( 1.0 ), time.mul( 0.25 ) ).saturate();
4
5// 2) 向量 − 标量(自动广播):降低 AO 影响
6const base = color( 0.9, 0.7, 0.2 );
7material.colorNode = mx_subtract( base, materialAO.mul( 0.3 ) );
8
9// 3) 简单边缘光因子:rim ≈ 1 − |N·V|
10const rim = mx_subtract( float( 1.0 ), normalView.dot( positionViewDirection ).abs() ).pow( 3.0 );
11material.emissiveNode = color( 0x44ccff ).mul( rim );
12