mx_unifiednoise2d
mx_unifiednoise2d
统一的二维噪声节点。通过 noiseType 切换 Perlin(0) / Cell(1) / Worley(2, 欧氏度量) / Fractal fBm(3),先用 p = texcoord * freq + offset 计算输入,再按 [outmin, outmax] 重映射并可选钳制,返回 float。
核心优势
一个节点覆盖多种经典噪声,并内置范围重映射/钳制与参数规范化(频率/偏移/抖动/分形层级),便于在同一材质中快速切换与对比不同噪声类型。
常见用途
程序化纹理/遮罩(污渍、云雾、石纹)
地形/水面等分形细节(fBm)
细胞/Worley 风格的有机图案与边缘膨胀遮罩
基于 UV 的去平铺与随机化处理
如何调整
关键参数:noiseType(0/1/2/3) 切换类型;freq(默认1,1) 控制图案密度;offset 平移图案;jitter(0-1) 仅 Worley 生效;outmin/outmax 重映射范围;clampoutput 钳制输出;octaves/lacunarity/diminish 仅 fBm 生效。建议:提高 freq 增密细节;fBm 中 octaves=4~6、lacunarity≈2、diminish≈0.5 常用。
代码示例
1// Perlin:基础灰度噪声
2const n0 = mx_unifiednoise2d( int(0), uv(), vec2(4.0), vec2(0.0), 1.0, 0.0, 1.0, false, 1, 2.0, 0.5 );
3material.emissiveNode = vec3( n0 );
4
5// Worley:调整抖动并钳制输出
6const n2 = mx_unifiednoise2d( int(2), uv(), vec2(10.0), vec2(0.0), 0.8, 0.0, 1.0, true, 1, 2.0, 0.5 );
7
8// Fractal fBm:多倍频
9const n3 = mx_unifiednoise2d( int(3), uv(), vec2(2.0,3.0), vec2(0.1, 0.0), 1.0, 0.0, 1.0, false, 5, 2.0, 0.5 );
10material.colorNode = mix( color(0x223344), color(0xffffff), n3 );