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

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



现在我们打开脚本
继承EditorWindow来写一个简单的工具界面
我们将工具写在”Tools/距离场图像生成“下面,工具窗口名字叫做"距离场贴图生成器",窗口尺寸为200*300;
我们的工具的目的是将一张二值位图,转换成一张SDF图,所以我们需要传入的只有一张Texture2D,那现在我们就声明一张public的Texture2D,并让他在窗口中被绘制出来。


接下来我们创建一个名叫ComputeSDF的函数来执行SDF(有向距离场)的计算,并在OnGUI中去调用
完成上面操作后让我们来再次打开工具看看

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