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

Unity 手把手教你实现有向距离场(SDF)图像生成工具(1)【猴子都能学会】

2023-07-05 01:23 作者:今天摸鱼就好了  | 我要投稿

    本文将采用Dead Reckoning算法实现一个有向距离场的生成工具,并实现一个如下的简单变形效果,当然对于SDF应用远不止于此,诸如原神的脸部阴影之类的,这个网上很多就不在这里详细讲了。该算法的优势相较于遍历全局耗时更少,虽有一定的精度下降,但相较于近似方法消除了产生的棱角,毕竟对于一张1024*1024的图要遍历全局的时间都够下楼买杯奶茶再上来了,而采用该算法可以在2秒内计算完成。

    首先先创建一个ComputeShader和一个脚本

如何创建ComputeShader
给ComputeShader命名为ComputePixel
脚本命名为CreateSDFTexture

现在我们打开脚本

继承EditorWindow来写一个简单的工具界面

    我们将工具写在”Tools/距离场图像生成“下面,工具窗口名字叫做"距离场贴图生成器",窗口尺寸为200*300;

    我们的工具的目的是将一张二值位图,转换成一张SDF图,所以我们需要传入的只有一张Texture2D,那现在我们就声明一张public的Texture2D,并让他在窗口中被绘制出来。

完成上面代码应该能在编辑器上找到这个工具
点击出现这样的界面

    接下来我们创建一个名叫ComputeSDF的函数来执行SDF(有向距离场)的计算,并在OnGUI中去调用

    完成上面操作后让我们来再次打开工具看看

    是不是多了个按钮, 但我们能发现按了这个按钮并没有什么用,因为到这里我们才写完了工具界面,我们会在后面来实现计算SDF的功能。

Unity 手把手教你实现有向距离场(SDF)图像生成工具(1)【猴子都能学会】的评论 (共 条)

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