Cellular noise
noise分類有2大類

基于網(wǎng)格的,和基于點(diǎn)的。

其實(shí)就是兩個(gè)點(diǎn)之間的中垂線網(wǎng)絡(luò)。

原始的voronoise需要遍歷所有點(diǎn),很明顯效率很差。
但是把,現(xiàn)在gpu非常的強(qiáng)悍

超過1200才低于60,如果用去生成地圖,30*40,顯然還是有點(diǎn)小的。生成地圖地圖太小是不行的,泰拉瑞亞的地圖是這個(gè)的100倍,也就是2秒內(nèi),可以接受。
cpu版本會使用四叉樹,gpu版本沒有那吊東西,cpu和gpu的互通還不如在gpu上干完。
于是gpu誕生了一個(gè)簡化版本,基于網(wǎng)格,移動他的點(diǎn)。這樣所在方框內(nèi)的點(diǎn),只需要計(jì)算周圍八個(gè)的。
見
https://www.shadertoy.com/view/Xd23Dh


https://iquilezles.org/articles/voronoise/的voronoise的頂點(diǎn)是隨著時(shí)間旋轉(zhuǎn)的,但是我們的voronoise頂點(diǎn)權(quán)重會被我們修改,所我們需要創(chuàng)建一個(gè)網(wǎng)格。

和上面的不同,就是,游離點(diǎn)在方框內(nèi)。每個(gè)點(diǎn)需要9次判斷。

1、floor出ID。
2、+offset,并且offset∈(0~1)。
3、uv每個(gè)點(diǎn)都會做9次判斷,而不是N次。

效率非常的高

這么多點(diǎn)也有60fps。
快得批爆。
總結(jié):
使用給voronoise添加一個(gè)專門的灰度用于加權(quán),就可以在一定程度控制地圖生成。
必須需要生成道理的空間,直接加權(quán)值為-1,那最后的填充不會超過0,就必須為空。