博客文章

2D柏林噪声

作者: andy.      时间: 2019-09-18 01:22:03

    2D柏林噪声算法还是比较简单,网上都有很多详细的方案。放一篇文章:http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf

    看了很多文章,都没有GLSL的版本,所以写了一个:

    我在github上面放了一份实现的:https://github.com/andyzhangyb/OpenGLEffects/tree/master/Noise

    这里面要注意几个事情:

    1、一些显卡GLSL不支持动态的index对数组取值,所以片段着色器里面写了一个indexPerm和indexGrad进行数组取值。但是在不支持动态index的显卡上面,第一次运行速度超慢,后面从其他地方抄了一个伪随机函数getGrad。

    2、生成的灰度图上面黑色面积太大,然后颜色加了0.5,和网上的各种图就比较相像了。手动计算了一下,直接取值确实看着比较像黑色。

    最后生成的图:

    image.png

    最近研究了一下噪声在游戏中的应用,发现没有那种一看就晓得怎么用,用在游戏那种位置的文章。可能是最近太累,脑袋生锈了吧。