1.使用Amplify Shader Editor(ASE)_创建标准Shader
在Shader Name中定义Shader的名称“Surface/Standard Shader-ASE”
类型(Shader Type)保持默认的Surface Shader
光照模型(Light Model)使用Standard Specular
其他设置保持默认即可。
1.1.Albedo
节点及线路如图:
添加Texture Sample 节点,
为了与后续添加的其他纹理节点区分开,
1.将名称设置为“Albedo”;
2.Default Texture保持默认的“White”不变,
3.为了在属性中通过一个二维向量控制所有纹理的平铺值,
Texture Sample 节点设置如下图:
- 开启节点的“No Scale Offset” 选项,这样在材质面板上就隐藏Tiling和Offset 。
- 将纹理节点与颜色节点相乘,颜色节点的名称设置为“Albedo Color”,默认值为纯白色,乘积连接到Output面板的Albedo上。
- 使用这种方法可以通过颜色节点进一步更改Albedo的颜色。
- 并且在使用的时候,假如纹理节点没有制定纹理贴图,那么“Albedo Color”属性的颜色就是Albedo的颜色。
1.2.Normal
节点及线路如图:
- 1.添加Texture Sample 节点,名称设置为“Normal”。
- 2.由于需要使用法线贴图,因此将节点的Default Texture 设置为“Bump”
- 3.开启“Unpack Normal Map”选项。开启之后,节点上会出现“Scale”接口。
- 5.将Float节点连接到Scale上,用于控制法线效果的强度;
- 6.Float节点名称设置为“Bumpiness”,
- 7.最小最大值分别为-2、2,这样数值就变成滑动条。
1.3.Emission
如上图,自发光(Emission)效果的连接方式跟Albedo类似,自发光(Emission)需要把颜色节点的“Default Value”设置成黑色(也即物体默认不发光)。默认情况下,颜色属性每个分量的数值区间为[0,1],而自发光的亮度有时候会超过1,因此还需要开启颜色节点的“HDR”选项,这样在使用的时候就可以设置亮度大于1的颜色。
1.4.Specular
在Unity内置的Standerd Specular中,Specular于Smoothness信息同时取自同一张纹理贴图,其中rgb通道的颜色信息为Specular,a通道的亮度信息为Smoothness。
Specular部分也是与Albedo类似的连接方法,只是需要物体默认是没有镜面反射的,因此将Specular Color颜色节点的“Default Value”设置为黑色。
对于光滑度来说,白色表示绝对光滑,黑色表示绝对粗糙。
因此通过将纹理的a通道与一个名称“Smoothness”的Float节点相乘,用于控制灰度图的亮度,从而控制光滑度。如果需要物体表面默认是绝对粗糙,那么将Float节点的“Default Value”设置为0,并且限制数值的输入为[0,1]。
1.5.Ambient Occlusion
Ambient Occlusion(AO)的链接方法与其他输出节点不一样。
- 1.Ambient Occlusion(AO)被称为环境光遮挡,用于控制物体对间接照明的接受程度,信息以灰度值进行保存,白色表示完全接受间接照明,黑色表示完全不接受间接照明。
- 2.在Unity内置的Standard和Standard Specular材质处理逻辑:
- a).当没有关联AO贴图时,模型完全接受间接照明(也即贴图默认颜色为白色)
- b).当关联AO贴图之后,又可以通过一个数值进行控制。数值为1的时候模型按照贴图计算AO,数值为0时模型完全接受间接照明(也即白色)。
如图:
添加Lerp 节点,A输入为白色,B输入链接AO贴图,然后通过一个Folat对A、B进行线性插值。
案例中是希望默认使用的是AO贴图,因此Float节点的“Default Value”设置为1,并且限制数值的输入范围为[0,1]。最终将插值结果链接到Output节点的AO上。
1.6.Texture Coordinate
如图:
使用Append节点将两个Float节点(名称分别是Tiling_X和Tiling_Y)合成二维向量。
然后链接到Texture Coordinate 节点的Tiling上,再链接到所有Texture节点的UV上。
以实现控制纹理贴图的平铺值。
1.7.属性排序&设置面板展示
属性排序的调整主要是方便后续调节材质效果。
在本篇第一张图的左下角可以找到Material Properties列表,Shader中开放出的属性都会在这里显示,拖动属性图标可以更改属性排序。完成排序后保存。
保存后,下面就是本篇Shader最终在材质面板所显示的:
这个Shader会跟Unity内置的Standard Specular Shader效果一致。