Unity3D引擎之Shader Forge应用
作者简介
姜雪伟,泰课在线高级讲师 - 海洋
引言
本篇文章将为读者介绍一个在材质渲染中能起到事半功倍效果的组件——Shader Forge。对于许多不熟悉材质渲染的开发者而言,Shader Forge更容易上手。在应用该组件时,首先需要选择合适的版本。
Shader Forge版本对应情况
以下是Shader Forge不同版本及其所支持的Unity 3D(U3D)版本:
- 1.3.0:支持U3D 5.5
- 1.2.8:支持U3D 5.4
- 1.2.7:支持U3D 5.3
- 1.26:支持U3D 5.3
下载对应的版本后,需直接将其导入到Unity工程中。否则,可能会出现Shader Forge与Unity 3D引擎渲染效果不一致的情况。
Shader Forge在Unity 3D引擎中的应用
Unity 3D引擎的次世代表现可通过Shader Forge插件实现。在进行材质渲染时,首先要清楚各个材质的作用。实际上,Shader渲染是通过对不同的材质进行相加、相乘、取样等操作来完成的。开发者需要先了解Shader Forge提供的各种材质的作用,然后针对不同的效果,在Shader Forge编辑器中进行拖拽操作即可。编辑器会根据编辑结果自动生成Shader。如果使用Unity制作次世代游戏,可以考虑使用该编辑器。虽然它比较耗费资源,但对于初学Shader的编程人员或美术人员来说非常适合。
Shader Forge编辑器提供的各种材质及其作用
扩散(Diffuse)
这是着色器的主要颜色。漫射颜色会接收光线,光线的减弱程度取决于光线与法线的夹角,并且会被阴影着色。
分散力量(DiffusePower)
这是光线与法线夹角下降的指数。当使用高于1的值时,可以用于模拟额外的金属效果。
镜面(Specular)
这是材质高光的颜色。值越高,高光越亮;若为黑色,则不会对材质产生影响。
光泽(Gloss)
这是高光的指数。值越高,高光看起来越闪亮;值接近0时,高光看起来无光。需要注意的是,如果没有对光泽进行重新映射,应避免使用低于1的光泽值。
正常的(Normal)
这表示切线法线方向,开发者可以连接法线贴图或定制的法向量。
发射(Emission)
无论照明条件如何,此属性会为材质持续添加光照。
传输(Transmission)
该控件用于控制当背后有光源时,有多少光能够透过表面。可用于模拟薄材料,如布或植被。
光包装(LightWrapping)
这是一种控制光线与法线夹角下降抵消的方法,可用于获得类似于地下散射的效果,最适合光滑的物体。输入偏红色的值会使红色通道比其他通道更多地“环绕”物体,使其看起来好像光线穿透网格,并且红色波长透出,类似于皮肤着色。
分散的环境光(DiffuseAmbient Light)
此属性会为材质添加光照,且受到扩散效果的影响。例如,可以使用立方体贴图(cubemap),基于图像的照明(IBL)的法线方向,或环境光。
镜面反射环境光(specularambient light)
该属性会为材质添加光照,影响镜面效果。例如,可以使用立方体贴图(cubemap),基于图像的照明(IBL)的视图反射方向。
定制的照明(customlighting)
当材质不发光时,此输入有效,允许开发者定义定制的照明行为。开发者可以在此处放置逐光(per - light)的节点。
阿尔法(alpha)
阿尔法用于控制最终像素的透明度。需要注意的是,局部透明度通常比较复杂,特别是在使用延迟渲染时。
阿尔法夹(alpha clip)
阿尔法夹用于控制当前像素/片段是否应该被绘制。对于需要完全透明而非部分透明的对象,应始终使用阿尔法夹。阿尔法夹比阿尔法更容易进行排序。
折射(refraction)
折射是指对屏幕背景像素的紫外线偏移。在使用之前,需确保将下面的阿尔法值设置为1,以便折射效果可见。需要注意的是,此效果需要Unity专业版。虽然在Unity免费编辑器中看起来似乎可以工作,但在非专业版的构建中无法正常工作。
轮廓宽度(outline width)
此属性会为材质添加轮廓,通过偏移网格的逆转面法线来实现。需要注意的是,硬边会破坏轮廓效果。
轮廓的颜色(outlinecolor)
该属性用于控制轮廓的颜色。
顶点偏移量(vertexoffset)
可用于随时间激活阴影,或在各种条件下改变对象的形状。开发者只需为每个顶点插入XYZ坐标偏移量即可。
DX11位移(dx11 displacement)
其工作原理与顶点偏移类似,但用于DX11棋盘花纹。(注意,仅适用于Windows系统,且需要启用支持DX11的GPU和Unity)
DX11棋盘花纹(dx11 tessellation)
材质组合与效果实现
这些材质通过不同的组合基本可以完成所有的材质渲染,包括次世代的渲染效果。如果使用Diffuse、Normal、Specular等材质,也可以采用类似的方式进行组合,以达到不同的效果。读者可以自行下载Shader Forge进行实践。后续还会为读者展示渲染的效果图。