大家好,我是阿赵,这里继续介绍Unity可视化写Shader的ASE插件的用法。上一篇介绍了ASE的安装和编辑器界面分布,这一篇主要是通过一个简单的例子介绍shader的创建和输入输出。
一、ASE的Shader创建
这里先选择Surface类型的Shader,然后输入Shader的名字。
创建后,会自动打开ASE的节点编辑器。如果不小心关掉了,可以找到Shader或者材质球,点击Open in Shader Editor按钮,就能重新打开节点编辑器。
这时候会看到,在节点编辑区域里面,只有一个和Shader名字一样的节点。这个是输出节点。
二、Shader的输入和输出
为了测试刚刚创建的Shader,所以需要一个模型来显示,我这里使用了ASE自带的一个模型。然后新建一个材质球,使用刚刚创建的那个Shader,并且把材质球赋予给模型。
这时候会看到,模型是一片漆黑。
这里需要理解一个基本的概念。一个Shader,最终会输出什么内容,都是定义在输出节点上面的。这个输出节点对应的是Surface类型Shader,所以包含了Surface类型Shader的所有输出项。
这里我简单的添加一个叫做mainColor的颜色节点(快捷键是按着键盘上的数字5 ,然后鼠标左键点击),然后把它拖到输出节点的Emission节点,并且点保存。
这时候,可以看到场景里面的模型变成了我们指定的白色了。
如果把颜色节点的类型改成Property,再保存
会发现在材质球上面多了一个可以编辑的颜色。
修改这个颜色,模型的颜色也跟着变化了。
这里修改节点类型为Property,就是把这个变量变成公共变量,可以由外部编辑。
选择输出节点,然后在左边的属性栏拉到最下面,会看到有一个材质属性列表,里面就有所有已经变成公共变量的属性了。
下面换一下节点,做出其他效果。先删除了之前的mainColor颜色节点,然后创建两个贴图节点(快捷键是按着键盘的t,然后鼠标左键点击),一个是漫反射贴图,叫做mainTex,另一个是法线贴图,叫做normalTex。
选择其中normalTex节点,然后在属性栏里面勾选Unpack Normal Map。
接下来把mainTex节点连接到输出节点的Albedo节点,把normalTex节点连接到输出节点的Normal节点。保存shader。
可以看到现在材质球上面多了2个可以编辑的贴图。我这里找了一张岩石的漫反射贴图和法线贴图,分别赋予给两个贴图。
现在看模型的效果:
模型上已经有了岩石的纹理,还有法线的凹凸效果了。
再来看看输出节点的属性栏。这个时候最下面的材质属性,就变成了mainTex和normalTex了。
三、总结
从这一个很小的例子里面,我演示了ASE最简单的创建Shader,并且赋予Shader的颜色或者贴图属性的操作。从例子可以看出ASE的操作非常简单,出效果也非常的快。
一个Shader,简单来说,分为了输入和输出2个部分。每一个Shader最少会有一个固定的输出节点。而输入部分,就是材质的属性了,根据自己的需要,可以定义颜色、数值、贴图等的参数作为输入。
不过这个例子还是很简单,固定的使用了Surface类型的shader,然后也只是单纯的把输入节点连接到输出节点,中途没有经过任何的计算。以后再继续深入的介绍。