2.4 Unity材质介绍
2.4.1 材质球、着色器之间的关系
对于Unity材质,有两样东西是许多初学者弄不清楚或者非常容易混淆的,一个是“Material”材质球,另一个是“Shader”着色器。
“Material”用于定义显示什么样的模型,包括这个模型使用什么样的纹理信息、模型的颜色信息等内容,而这些纹理、颜色的应用方式和类型则是由“Shader”进行定义的。举一个简单的例子,我们需要展示一个木质的柜子,首先要考虑的是使用什么样的“Shader”,这个“Shader”是否支持我们需要的漫反射贴图、法线贴图、环境光贴图、高光贴图、法线贴图及高光贴图的强度调整以及颜色的调整等。当确认需要的“Shader”之后,就可以创建一个“Material”,指定使用这个“Shader”,再对其中的各种贴图信息、颜色信息进行赋值。可以这样理解,材质球就是着色器的载体,而着色器用于配置该如何设置图形硬件进行渲染。
2.4.2 Unity标准着色器
Unity已经给用户内置了许多不同的“Shader”,而Unity 5之后重点推出了一种新的渲染方式——基于物理的渲染(Physically Based Rendering,PBR)。与之对应的是一套基于物理着色(Physically Based Shading,PBS)的多功能、多用处的“Shader”。这就是“Standard Shader”(标准着色器),用于取代传统的着色器。在Unity中有两个标准着色器,一个是“Standard”标准着色器标准版,另一个是“Standard(Specular Setup)”标准着色器高光反射版。我们可以看看官方网站提供的一个案例场景,其中所有的材质球都使用了标准着色器,如图2-29所示。
图2-29 材质球使用了标准着色器
我们就其中的“Standard Shader”(标准着色器)进行讲解,首先在Project面板中右击,新建一个材质球,默认的着色器就是标准着色器,如图2-30所示。这里对其中的一些重要参数进行说明。
图2-30 标准着色器
- Shader:着色器的选择,新建材质球的默认着色器就是标准版着色器。
- Rendering Mode:渲染模式选择。
- Opaque:不透明模式。
- Cutout:透明模式,在这种模式下,没有半透明的过渡,纹理要么是完全透明的,要么是完全不透明的,适合使用在头发、碎布、衣服上。
- Fade:透明模式,此模式下的纹理是淡入淡出的效果,其高光和反射也会是淡入淡出的效果。
- Transparent:透明模式,此模式下的透明度是根据纹理贴图的透明通道自动生成的,高光和反射也会完整保留。
- Albedo:物体表面的基本纹理和颜色信息。
- Metallic:金属感,可以通过贴图和数值来区分金属或者非金属以及金属的程度。
- Smoothness:平滑度,控制物体是否光滑。值越大,物体越光滑;值越小,物体越粗糙。
- Source:平滑度的控制来源。
- Albedo Alpha:Albedo的透明通道。
- Metallic Alpha:金属度的透明通道。
- Normal Map:法线贴图。
- Height Map:高度图,用于表现高低信息,法线只能表现光照时的强弱,而高度图可以增加物理位置上的前后。
- Occlusion:遮挡贴图,用以控制物体明暗关系以及强度。
- Emission:自发光颜色,例如在制作一些自发光的灯带时,我们就可以调整这个颜色,默认黑色为关闭自发光。
在了解基本的参数意义之后,可以学习一下官方场景案例中非常逼真且细节丰富的木头材质球,如图2-31所示。可以看到,简单的木头也是用很多纹理贴图合成的,在查看这些纹理时,可以按住Ctrl键单击纹理对纹理进行预览。单击纹理会在Project视图中指向该纹理贴图,双击纹理时会在外部打开此纹理。此案例会在资料中提供下载。
图2-31 木头的材质球