【GPU Gems 学习笔记】Implementing Improved Perlin Noise

本文深入探讨了Ken Perlin在1983年提出的柏林噪声算法,详细解释了一维和二维柏林噪声的实现过程,包括插值函数的选择、晶格顶点与坐标的关系、伪随机梯度向量的生成。通过对原始算法的改进,如采用5次样条插值,提高了噪声的平滑性和连续性。此外,文章还介绍了噪声在电影视觉效果、凹凸贴图等领域的应用。
摘要由CSDN通过智能技术生成

柏林噪声

柏林噪声算法(Perlin Noise)是Ken Perlin在1983年提出的一种渐变噪声。和完全随机的白噪声相比,柏林噪声做到了杂乱而有序。能够更好地模拟自然界中的随机现象的复杂性和相互间的关联性,常被用于电影视觉效果。

a. 一维柏林噪声

  • 随机出一些散点;
  • 对这些点进行插值获得连续的曲线;
  • 用Unity的GL屏幕划线写了一下,这里用的插值函数是f(t) =6 t^{5} - 15 t^{4} + 10 t^{3}

b. 二维柏林噪声

  • 首先定义一个晶格结构,二维的情况下就是一个网格结构。并且为每个晶格顶点赋予一个"伪随机"的梯度向量;

   

  • 对于每个二维坐标点,找到与其相邻的4个晶格顶点,计算该点到各个晶格顶点的距离向量;

  • 四个距离向量分别与对应的梯度向量做点乘,得到点乘结果; 

  • 最后使用缓和曲线(ease curves)对点乘结果做插值求权重和;

  • 效果如下:

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值