大家好,我是阿赵,接下来我打算介绍一下Unity引擎的一个好用的可视化Shader编辑插件。这个插件叫做Amplify Shader Editor,下面都会简称为ASE。这一篇主要是讲一下这个插件的获取、安装,和一些简单的界面用法介绍。之后有机会,再深入的介绍其他的用法。
ASE插件是一个收费的插件,可以在Unity的Asset Store上面获取。
购买了ASE之后,把它导入到项目,会弹出欢迎页面,里面有版本更新说明、资源例子和说明手册等的信息。
然后会在项目里面多了一个AmplifyShaderEditor的文件夹,里面有一个Examples例子文件夹,和一个Plugins插件文件夹,还有几个说明文档。
如果你只是想使用 ASE,那么Examples文件夹其实是可以删掉的。不过我觉得这个例子文件夹里面有很多好东西,可以教会我们很多效果的做法。
这些看着是Unity图标的文件,并不是Unity的场景文件,而是Package包,所以双击它们,可以把内容导入到当前项目。
比如我这里全部导入完,会发现多了几个文件夹。Assets文件夹之前就有,但里面会多了一些资源。可以看出,ASE可以应用于多种管线的Shader编写,比如HDRP或者URP都可以。
然后里面有非常多的例子,每个例子里面都有场景文件,可以打开来看,然后里面还有Shader和材质球。
这里我随便选择了一个例子,选择里面的材质球,会发现在Inspector面板上面的材质球属性,多了一些按钮。点击一下Open in Shader Editor按钮,就可以打开ASE的节点编辑器。
这一篇文章先来介绍一下这个节点编辑器的各个部分,之后还会另外写文章深入介绍各种功能。
在最左边,有一个属性栏。根据我们选择不同的节点,这个属性栏会相应的显示该节点的属性。比如我选择一个输出节点,那么这里就显示了输出节点的属性和选项。
然后我选择了一个UV节点,那么相应的这里会变成UV节点的内容。
在编辑过任何东西之后,会发现左上角的Shader名称后面多了个星号,这是代表当前的Shader还没有保存,如果想保存,可以点击保存按钮。
ASE编辑完节点之后,最终还是会生成一个Shader文件的,所以可以通过点击这个按钮来查看Shader代码。
我觉得这是ASE的一个非常好的功能。它生成的代码比较的整齐,可阅读性比较高。而且一些功能比较复杂的节点,有时候我们忘记了具体的代码写法,可以通过ASE生成代码,来查看实现的源码。
中间区域是ASE的节点编辑区域,我们主要就是在这个区域来创建节点,连接节点,然后得到我们想要的效果。
这里有一个比较厉害的地方,大部分节点的右边都有个小三角,点击可以展开,展开后,可以在节点界面就预览到了节点连接之后的效果。这对于查错时是非常好用的,因为如果手写Shader,发现效果不对的时候,没有办法很直观的知道问题出现在哪里。但在ASE,我们可以直观检查每一个节点当前的效果,很容易知道是哪一步开始出现问题。
节点编辑区域的右上角有一排辅助按钮,我是比较少用到的,包括了分享链接、截图、居中节点之类的功能
在整个编辑器的最右边,有一个可查找列表,里面列出了ASE自带的所有可用的节点。
ASE是一个强大并且高级的可视化Shader编辑器,它的某些功能,甚至比UE的材质编辑器还要好用。
不过我很少拿ASE编辑完Shader就直接使用在项目里面。原因是ASE毕竟是通过固有的模板去生成Shader代码,所以最终得到的Shader代码会比直接手写的冗余和复杂一些。我一般的做法是,先用ASE快速的把效果连接出来,然后查看生成的代码,再对代码进行一些优化,然后就可以使用了。
ASE的优点除了出效果快,还内置有很多效果不错的节点可以使用,比如之前介绍过的视差偏移之类的节点。很多算法,实际上我是记不住的,但只要在ASE里面找到了相应的节点,生成代码之后,我就能用了。所以很多时候,我会把ASE当做是一个工具书一样的去查询。
不过,ASE并不会让不会编写Shader的人变得会编写Shader,因为它只是加快了编写过程,还有记录了很多常用的算法。同样一个效果,如果连接的方式不一样,最终的性能也是不一样的。我见过有些纯美术的同事,对着网上一些例子也连出了大概相似的效果,但实际生成的Shader是完全没法用的,甚至出现了问题,他们也不知道问题出在哪里,更没有办法解决。
所以,它只是一个好用的工具,但在不懂手写Shader的前提下,最好还是别用。