作者: 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,和网上的各种图就比较相像了。手动计算了一下,直接取值确实看着比较像黑色。
最后生成的图:
最近研究了一下噪声在游戏中的应用,发现没有那种一看就晓得怎么用,用在游戏那种位置的文章。可能是最近太累,脑袋生锈了吧。