噪声函数

2 / 3

📝 练习目标

学习和实现 GLSL 中常用的噪声函数,如随机噪声、值噪声和梯度噪声(如Perlin噪声的简化版),用于生成各种程序化纹理和效果。

💡 💡 教程内容

学习各种噪声函数的实现和应用,为程序化纹理生成打下基础。

学习目标

- 理解不同类型噪声函数的特点

- 学习从零实现基础噪声算法

- 掌握噪声函数在纹理生成中的应用

核心概念

伪随机数生成

在着色器中创建随机性:

`glsl

float random(vec2 st) {

return fract(sin(dot(st.xy, vec2(12.9898,78.233))) * 43758.5453123);

}

`

值噪声 (Value Noise)

基于网格点随机值的插值:

1. 在网格点生成随机值

2. 使用双线性插值平滑过渡

3. 产生连续的噪声场

梯度噪声 (Gradient Noise)

基于梯度向量的更高质量噪声:

- 在网格点存储梯度向量

- 计算到网格点的距离向量

- 使用点积和插值生成噪声

噪声应用

- 纹理生成:木纹、大理石、云朵

- 地形生成:高度图、侵蚀效果

- 动画效果:火焰、水波、粒子

练习

实现一个基础的值噪声函数,并用它创建有机纹理。

提示

1. 从简单的随机函数开始

2. 实现网格坐标计算

3. 在网格角点生成随机值

4. 使用smoothstep进行插值

5. 组合多个尺度的噪声

预期效果

你应该看到平滑的有机纹理,具有自然的随机变化,可以用作各种材质的基础。

GLSL 代码编辑器

正确代码预览

当前代码预览