mx_multiply
mx_multiply
MaterialX 风格的“乘法”函数别名。将第一个输入与第二个输入相乘;若省略第二个输入,则使用 `float(1)`,相当于透传。
核心优势
与 MaterialX 命名对齐并保持 TSL 的类型自适应乘法语义;默认值为 1 让它可单输入接入且不改变数据,便于渐进接线与调试。
常见用途
将纹理或颜色进行调制(逐分量相乘)
用标量缩放向量、颜色或标量信号
执行矩阵 × 向量或矩阵 × 矩阵变换
如何调整
通过改变第二个输入控制缩放或调制强度:>1 增强,0-1 衰减,0 将结果归零。对颜色相乘可配合 clamp 避免溢出;进行矩阵乘法时确保维度匹配(如 mat4 与 vec4)。
代码示例
1
2// 1) 颜色调制:纹理色 × 色调
3const tinted = mx_multiply( texture( myTexture, uv() ), vec3( 1.2, 0.9, 0.9 ) );
4material.colorNode = tinted;
5
6// 2) 仅给一个输入时为透传(in2 默认为 1)
7const passthrough = mx_multiply( diffuseColor );
8
9// 3) 矩阵变换:世界矩阵 × 位置
10const worldPos = mx_multiply( objectWorldMatrix(), vec4( positionLocal, 1.0 ) );