Perlin噪声是由Ken Perlin发明的一种流行的程序生成算法。它可以用来在程序上生成诸如纹理和地形之类的图案。
Perlin噪声算法很容易会与价值噪声和单纯形噪声相混淆。
Perlin噪声算法将一定数量的浮点参数(取决于维度)作为输入,并返回一定范围内的值。
Perlin噪声算法实例
假设是二维的,所以需要x和y两个参数。如果要生成纹理,x和y将是纹理中像素的坐标。
纹理生成会遍历纹理中的每个像素,为每个像素调用Perlin噪声函数,并根据返回值决定该像素的颜色。
每个像素不仅具有随机颜色,而且遵循像素到像素的平滑过渡。如果出现生成的纹理看起来相近,这是因为Perlin噪声算法的性质,即2个输入值比较靠近,则Perlin噪声函数的结果也会相近。
Perlin噪声算法原理
输入被认为是在一个整数网格上(参见下图)。每个浮点输入都位于该网格的一个正方形内。对于该正方形的4个角中的每一个,我们生成一个值。然后我们在这4个值之间进行插值,得到最终结果。
Perlin噪声和值噪声之间的区别在于如何获得这4个值。值噪声使用伪随机数生成器,Perlin噪声算法则在2个向量之间进行点积。