Cellular noise
noise分类有2大类

基于网格的,和基于点的。

其实就是两个点之间的中垂线网络。

原始的voronoise需要遍历所有点,很明显效率很差。
但是把,现在gpu非常的强悍

超过1200才低于60,如果用去生成地图,30*40,显然还是有点小的。生成地图地图太小是不行的,泰拉瑞亚的地图是这个的100倍,也就是2秒内,可以接受。
cpu版本会使用四叉树,gpu版本没有那吊东西,cpu和gpu的互通还不如在gpu上干完。
于是gpu诞生了一个简化版本,基于网格,移动他的点。这样所在方框内的点,只需要计算周围八个的。
见
https://www.shadertoy.com/view/Xd23Dh


https://iquilezles.org/articles/voronoise/的voronoise的顶点是随着时间旋转的,但是我们的voronoise顶点权重会被我们修改,所我们需要创建一个网格。

和上面的不同,就是,游离点在方框内。每个点需要9次判断。

1、floor出ID。
2、+offset,并且offset∈(0~1)。
3、uv每个点都会做9次判断,而不是N次。

效率非常的高

这么多点也有60fps。
快得批爆。
总结:
使用给voronoise添加一个专门的灰度用于加权,就可以在一定程度控制地图生成。
必须需要生成道理的空间,直接加权值为-1,那最后的填充不会超过0,就必须为空。