分形布朗运动 (FBM)

13 / 15
通过叠加多个不同频率和振幅的噪声层(通常是Perlin噪声或Simplex噪声)来创建具有自相似性的复杂图案,常用于生成自然现象如山脉、云彩、水面等。

单层噪声太均匀——缺少细节。FBM 把多层噪声叠加起来,每层频率翻倍、振幅减半,结果既有大范围的起伏,也有细粒度的纹理:


倍频程(Octaves)是什么

每「层」叫一个倍频程(octave)。第一层是低频的大块噪声(提供整体形状),第二层频率翻倍振幅减半(添加中等细节),以此类推。叠加的层数越多,细节越丰富——但超过 6 层之后效果通常没有明显提升。


频率翻倍、振幅减半

振幅按 0.5 的幂次衰减(1/2, 1/4, 1/8 ...),理论上无限叠加的总和收敛,不会溢出 1.0。


画面里三列对比

左列 1 个倍频程——平滑的大块,像地形的高度图轮廓。中列 3 个倍频程——加入了中等细节。右列 6 个倍频程——细节最丰富,像真实的地形或云层截面。


试着改一改

改动效果
int octaves = 4 改为 1只有粗粒度的大块噪声
int octaves = 4 改为 8极细的高频细节,但肉眼已很难辨识差异
amplitude *= 0.5 改为 amplitude *= 0.7高层振幅衰减变慢,细节贡献增大,对比度更高
uv * 3.0 改为 uv * 6.0整体频率翻倍,纹理变细

练习

尝试把 int octaves = 4 分别改为 136,观察每个值下画面细节的变化,理解倍频程数量对 FBM 外观的影响。

答案解析

1 个倍频程:只有一层平滑噪声,类似基础值噪声,没有细节。

3 个倍频程:加入了中频细节,形状开始有复杂感,像浓缩的云层或柔和的地形。

6 个倍频程:细节丰富到接近自然界的复杂度,微小的纹理让整体更真实。

关键规律:每增加一个倍频程,贡献的振幅是上一层的一半,新增的视觉复杂度在逐渐降低。超过 6–8 层后,增加更多层的效果几乎不可见。

GLSL 代码编辑器

正确代码预览

当前代码预览