2014-02-28 40 views
0

嘿,有没有一种(简单)的方法来避免佩林噪音会在一段时间后重复?我想将它用于无尽的地形,并且不想一次又一次拥有相同的地形,所以我需要一个解决方案。我也将它与分形布朗运动结合起来,并用hls将它写在GPU上以节省一些计算时间。聪明的方法来避免佩林噪音的重复

回答

0

排序,是的。

您希望避免的重复是由于仅使用低16位(通常最低的8位)来确定与每个顶点关联的伪随机梯度向量。为了得到你想要的任意大的重复比例,我建议使用顶点的包装散列。

即:让XN = X & 255,YN = Y & 255等,然后代替使用烫发[XN +烫发[YN],用新的X1 =(X & 255)^替换它们(( (x >> 256)^((x >> 16)& 255)^((x >> 24)& 255)^ ... {使用按位(X)OR代替加法以确保没有溢出出现在随机化向量分配的查找表中。}

然后使用perm [π] perm [Yi](或perm [xi + perm [Yi]],无论)用于梯度选择过程。

这样,您的点的更高倍数(大规模)索引将继续影响噪声向量的分配。

由于您也使用fBm,所以只有在所有八度音阶同步后,您的地形才会真正重复,因此,如果使用不协调的和弦,则需要更长的时间。 {不是简单的2 ** n通常使用,但是这个选项肯定会增加计算时间,因为实际上使用整数除法而不是位移。}使用素数序列应该给出最极端的重复长度。然而,根据你选择的持久参数,这样的处理可能不值得这些额外的失败,甚至是显而易见的。