voronoi图代码_【浅入浅出】教你实现最简单的Voronoi图

本文通过ShaderLab详细讲解如何实现一个简单的Voronoi图。Voronoi图常用于模拟自然随机效果,作者从基本概念出发,逐步解释并展示如何创建随机粒子、计算点间距离以及优化算法以降低计算开销。最后,通过代码演示生成Voronoi图的完整过程,并解决可能出现的闪烁和断边问题。
摘要由CSDN通过智能技术生成

大家好,我是Shawn,今天我们用shaderlab来实现一个最简单的Voronoi图。首先什么是Voronoi图?Voronoi图,又叫泰森多边形或Dirichlet图,它是由一组由连接两邻点直线垂直平分线组成的连续多边形组成。它是一个程序纹理,通常用来实现一些随机的事件。有时候,我们可以简单的使用random函数来实现一些伪随机,但实际上,这通常表现的很不理想。想象一下你处在完全随机的迷宫里,或许它根本就没有出口。所以我们通常使用“噪声”来实现一些看起来比较自然的随机,而Voronoi图就是噪声的一种。

Voronoi是一种多孔状图,通常来模拟岩石,木纹等结构。

70f887e38e523c4ae169490001d6c1c2.png

那这种Voronoi用数学是如何实现的呢?

现在我们有两个点,如果我们以这两个点为圆心向外扩张,我们会得到一条交线:

8c42004c427a41008f8f8c08a6f7c851.png

好了,我们给它再加几个点:

d79416d27f0574f2008f9d3c3ceec50d.png

353674d91d48f3e1253ecfd3f519e1b3.png

实现了!这就是Voronoi 几何图案

我们可以通过他的构造直观的了解到图形的边界就是两点之间的垂直平分线,每个顶点与相邻的点的距离又是相等的。

我们用shaderlab实现一个最简单的Voronoi图:

我们的思路是,抛出一些随机的点,计算每个点和所有点之间的距离,取最小值最为他的值,然后着色,当然您也可以选择第二小的值,第三小的值,这里我们使用最小值。

第一步,我们创建一个unlitshader 文件,添加如下自定义函数,这个函数帮助我们返回一个“随机”的粒子。

			float2 N22(float2 p){
    
			
				float3 a = frac(p.xyx*float3(123.34
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值