mx_ramp4
mx_ramp4
基于二维坐标在四个角值之间进行双线性插值(顺序:左上、右上、左下、右下)。默认使用模型 UV(已自动 clamp 到 [0,1]),返回与输入一致的类型(float/vec2/vec3/vec4)。
核心优势
一行完成二维渐变/表格插值;类型泛化且自动夹取,避免手写权重与边界处理,语义清晰可复用。
常见用途
2D 颜色渐变:用四个角颜色铺满表面。
两轴参数混合:例如将(金属度×粗糙度)做二维控制面。
以四个不同采样值(含纹理采样)进行平滑过渡。
轻量 2×2 LUT/Heatmap:将两个标量映射为颜色/系数。
基于 UV/屏幕坐标的象限遮罩与渐层。
如何调整
更改四个角输入即可重塑渐变;将 texcoord 换为自定义 vec2(如 uv(1)、screenUV、positionWorld.xy 经 remap)可改变方向与范围。插值前可对 texcoord 做缩放/旋转/非线性映射(如 mul、fract、pow、smoothstep)以控制过渡宽度或分布。混合纹理时先分别采样再作为四角值传入。
代码示例
1
2// 以 UV 在四角颜色间双线性过渡
3const rampColor = mx_ramp4(
4 color( 0xff3b30 ), // tl
5 color( 0x34c759 ), // tr
6 color( 0x007aff ), // bl
7 color( 0xffcc00 ), // br
8 uv()
9);
10
11// 应用于标准材质颜色
12material.colorNode = rampColor;
13
14// 也可省略 texcoord 使用默认 uv()
15// material.roughnessNode = mx_ramp4( 0.1, 0.4, 0.6, 0.9 );
16