mx_invert
mx_invert
返回 amount − in1,amount 默认为 1。用于对标 MaterialX 的取反/镜像算子,适用于 float、vecN 与颜色。
核心优势
一行实现标准负片或围绕任意枢轴的镜像变换,类型自动对齐,比手写 sub(amount, in1) 更简洁、更不易错。
常见用途
颜色负片:1 − color 或 vec3(1) − color。
反转蒙版或混合权重,用于溶解与遮罩。
由粗糙度得到光泽度:gloss = 1 − roughness。
围绕自定义枢轴 p 镜像:设置 amount = 2p(标量或向量)。
如何调整
通过第二参 amount 控制“反转中心”。amount = 1/vec3(1) 为经典取反;若需围绕枢轴 p 镜像,则设 amount = 2p。输入不在 [0,1] 时,配合 clamp(...) 或 remap(...) 做范围归一化。
代码示例
1// 负片:1 − 纹理颜色
2material.colorNode = mx_invert( texture( baseMap ).rgb );
3
4// 反转蒙版
5const mask = texture( maskMap ).r;
6const inverted = mx_invert( mask );
7material.emissiveNode = vec3( inverted );
8
9// 光泽度 = 1 − 粗糙度
10const rough = texture( roughnessMap ).r;
11material.clearcoatRoughnessNode = mx_invert( rough );