欢迎光临散文网 会员登陆 & 注册

Cellular noise

2022-08-12 02:32 作者:damedown  | 我要投稿

noise分类有2大类

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


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

原始的voronoise需要遍历所有点,很明显效率很差。

但是把,现在gpu非常的强悍

1060笔记本,1000个点也能跑60帧

超过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顶点权重会被我们修改,所我们需要创建一个网格。



form the book of shader

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


1、floor出ID。

2、+offset,并且offset∈(0~1)。

3、uv每个点都会做9次判断,而不是N次。

https://www.shadertoy.com/view/ftdczX

效率非常的高

1000000*1000000个

这么多点也有60fps。


快得批爆。


总结:

使用给voronoise添加一个专门的灰度用于加权,就可以在一定程度控制地图生成。

必须需要生成道理的空间,直接加权值为-1,那最后的填充不会超过0,就必须为空。

Cellular noise的评论 (共 条)

分享到微博请遵守国家法律