C/C++编程笔记:游戏开发中的噪声算法详解,游戏编程常用技术( 七 )

一个问题是 , 当玩家离开一个区块时 , 进入第二个区块 , 然后又回到第一个区块 , 此时玩家期望看到的第一个区块和之前看到的保持一致 。 例如 , 输入1时得到0.3 , 输入2时得到0.7 , 当再次输入1时预期得到0.3 。

因此噪声的一个重要性质是哈希性(可哈希的) 。

尽管使用输入值作为srand()的参数来设置rand()的种子 , 从而达到哈希效果也是可行的 。

然而最好花点时间写一个自己的哈希函数 , 使其简易使用而且也不破坏程序其他地方使用rand()的效果 。

hash11的11代表输入一维坐标 , 输出一维值 。 类似的hash22代表输入二维坐标 , 输出二维值 。

若要了解更多随机性哈希函数实现 , 可参考下面两个shadertoy的代码:

https://www.shadertoy.com/view/4sc3z2

https://www.shadertoy.com/view/4djSRW

推荐阅读