US4L8——噪声相关效果
US4L8——噪声相关效果
噪声
噪声是一种程序生成的随机或伪随机数据,在图形学中常用来创建各种自然现象和复杂纹理效果。
它的本质是一种由数学算法公式生成的有规则性或可控的随机数据。
通过噪声算法生成的随机数据具有以下特点:
- 随机性:噪声数据本质上是随机的,这意味着它具有不规则性,无法通过简单的模式预测
- 平滑性:数据不会突然跳跃或变化,而是呈现出逐渐过渡的效果,适合模拟自然现象
- 周期性:随着坐标的变化,噪声值会重复出现,形成一个封闭的循环。也可以通过调整噪声的范围或修改算法来避免
- 可调性:大多数噪声算法的输出是可以调整的,这种可调性允许你根据需求灵活地控制噪声的表现,适应不同的视觉效果或逻辑处理需求
- 多维性:能够处理多维数据,这意味着它们可以生成二维、三维甚至更高维度的噪声数据
就因为噪声数据具有以上这些特点,我们可以利用噪声来实现一些特殊效果,比如:
-
地形生成
-
云层效果
-
烟雾效果
-
水面模拟
-
消融效果
等等
常用的噪声算法
- Perlin Noise(柏林噪声) :适合生成自然现象的纹理(比如云、火焰、地形)
- Simplex Noise(简单噪声) :Perlin Noise 的优化版,更适合实时计算,适用于体积云、流体动画等
- Random Function(随机噪声/白噪音) :计算简单,适合生成粒子效果或星空背景
- Fractal Noise(分形噪声) :将多层PerlinNoise或SimplexNoise叠加,生成复杂效果,适用于高细节地形、云层、火焰等效果
- Worley Noise(沃利噪音) :生成类似“细胞”的纹理,适用于模拟裂纹或有机表面
等等
如何在 Unity 中使用噪声
如果想要在 Unity 中使用这些噪声算法来处理逻辑,可以采用以下方式:
- 使用一些第三方的噪声库,利用别人写好的内容直接来计算
- 根据噪声算法原理自己实现计算逻辑
- 使用 Unity 自带的噪声算法API,比如
Mathf.PerlinNoise()
(但是 Unity 提供的相关 API 非常少) - 使用 Shader 逻辑流程图插件(Shader Graph 或 ASE)中提供的噪声节点
- 使用预生成的噪声纹理,通过材质或 Shader 对纹理进行采样
从性能角度考虑,由于使用噪声算法实时计算一定会增加开销,
因此噪声纹理是我们经常会使用的一种方式,它可以帮助我们减少实时计算,减少性能消耗
噪声纹理
噪声纹理(Noise Texture)是一种常用于计算机图形学中的纹理类型,常用于模拟自然现象如云层、地形、火焰、岩石表面等等。
**它本质上就是通过噪声算法生成的图像。**它生成的核心原理是利用噪声函数计算每个纹理坐标的值,再将这些值映射为图像的像素值。
将噪声数据存储到图像中,直接采样拿来使用,而不是实时计算。相当于是在用内存换性能!
提前将噪声数据计算好存在图片中,使用时从内存中的图片中取出数据,直接使用!
噪声纹理的制作方法
制作噪声纹理有两种方法:
- Photoshop生成噪声、渐变纹理
- 柏林噪声纹理生成工具实现
噪声相关效果
- 消融效果
- 水波效果
- 噪声雾效
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!