GLSL 效果示例
云朵(分形布朗运动)
用分形布朗运动(fBm)把多层噪声叠加起来,做出缓慢飘动的程序化云朵。
在线示例
修改右侧代码,左侧预览会实时更新。
工作原理
一层噪声看起来是柔和的斑块,但真实的云在每个尺度上都有细节:大的形状、上面更小的云团,还有更细的丝絮。**分形布朗运动(fBm)**把几层噪声(叫作八度,octave)叠加起来,做出这种效果:
- 每一层把坐标乘以 2(
st *= 2.0),所以细节尺寸只有上一层的一半。 - 每一层把强度乘以 0.5(
amplitude *= 0.5),所以小细节永远不会盖过大形状。
6 层叠加时,第一层占结果的 50%,第二层占 25%,然后是 12.5%,依此类推。
接着 smoothstep(0.45, 0.8, n) 决定哪里算云:低于 0.45 是晴空,高于 0.8 是纯白,中间是蓬松柔和的边缘。
试着改一改
| 修改 | 效果 |
|---|---|
i < 6 改成 i < 2 | 模糊的斑块,没有细节 |
smoothstep(0.45, 0.8, n) 改成 smoothstep(0.3, 0.6, n) | 云多得多的阴天 |
amplitude *= 0.5 改成 amplitude *= 0.7 | 更粗糙、颗粒感更强的云 |
u_time * 0.08 改成 u_time * 0.4 | 风变大了 |