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

godot 随机地图4 使用 cellular 创建基础地图

2023-05-21 15:30 作者:damedown  | 我要投稿

我们先看cellular能够创建那些procedure texture吧

voro noise

techno

这些都是根据cellular生成的。



一、voronoise

简单介绍下cellular的生成原理

生成核心点,判断uv离哪个基点最近,然后填充那个基点的颜色。

如果这样的话,就会全部遍历一次。

为了减少运算量,被优化成网格的方式

这样只需要判断所在3*3的网格里面,一个uv只需要判断9次,没错是9次。当然还可以继续优化,但是相比uv*n*n次缩减到uv*3*3次已经是指数级减少,如果还需要更骚的化,也是可以的,我们的目的不是把300fps的算法提高到1000fps。

我们拿到了uv最靠近的顶点的坐标和距离就可以实现很多骚操作了。

可以直接去看我shadertoy写过的

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

这里效率低下一点也没啥关系,2k也能跑。

现在已经8成正确了,不需要追求10分。


直接移植过去,现在之所以不用FNL,是为了熟练一点。还有一个很重要的就是voroniose和techno只相差1行代码,如果要骚操作地图生成,还是得自己玩弄noisetexture比较好。

简单修改,根据错误提示修改就好了

1、其中UV为const 不能*= ,我也难得在添加一个变量,直接*=10.0f

2、vec2(i,j)是非法的,因为i和j是int,强制转化一下

3、iTime改为TIME

4、fragColor 改为COLOR

这个流动的细胞体,如果去掉

就会得到网络

所以这里的TIME我们最好手动控制,也就是说控制网络点的offset,就可以控制离散度。这里FNL可不会给我们提供参数。不过FNL也确实方便。

如果我们要控制offset

二、techno Manhattan distance

如图

还有一些骚操作

简单修改

当然fnl已经有了

我们可以魔改的地方非常多。


比如我们使用wood texture的算法

魔改成Turbulence

使用Euclidean distance欧几里得距离计算法

再翻转


三、转成map

只需要把texture_sprite的material改了

因为我们使用翻转后会有很多聚集在0.5附加,然而越是结晶1.0,月白,我这时候选择0.0~0.3的数据就会得到一下镂空的效果。

其他的操作我们在下一章继续。

godot 随机地图4 使用 cellular 创建基础地图的评论 (共 条)

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