2014-02-28 39 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通常使用,但是這個選項肯定會增加計算時間,因爲實際上使用整數除法而不是位移。}使用素數序列應該給出最極端的重複長度。然而,根據你選擇的持久參數,這樣的處理可能不值得這些額外的失敗,甚至是顯而易見的。