本篇文章为Unity官方博客的翻译整理
原文链接
日期:2018年8月7日
作者:Alex Lindman
翻译:咲夜詩

序言

在2018.1中我们引入的新工具Shader Graph能让你可视化创建shader。
在2018.2的新版本中,我们添加了很多新的特性,一起来看看吧
本文中的graph指Shader Graph创建的文件。

2018.2中添加的新特性包括:
·支持HDRP
·Vertex Position
·Property Reference Names
·Editable Paths for Graphs
·新节点:gradients, texture 2D array, texture 3D,等等

使用Demo

我们将通过案例工程了解如何使用Shader Graph创建植被场景。
首先,下载案例工程

Unity的模板项目类似,这个项目也包含一个Readme用于速览如何使用我们使用到的工具。

这个工程用简单的graph实现了好看的植被和环境shader,同时展现了在2个渲染管线中切换。
在Readme面板,有切换LWRP和HDRP的按钮。
这让你可以自己指定管线asset,测试不同管线间的适应性。对于产品,我们建议只使用一种渲染管线。

在Assets/Scenes中找到示例场景来开始本次学习。
接下来,我们将讨论demo中出现的graph。

Standard Shader Graph

在Assets/Shaders文件夹可以找到示例的graph。

StandardShader的属性选项基本和standard surface shader一样。
其中Mask map遵守HDRP的纹理打包格式。
你可以根据项目需求自定义graph。

在这个项目中的standard shader有一些独有的特点,包括:
·在Master Node设置中开启双面渲染
·Is Front-Face节点用于反转朝后的法线
·在alpha通道中的基于世界坐标的dither mask(减少颜色块

Simple Vegetation Graph 简单的植物动画

在项目中你可以找到一个simple vegetation graph。
这是标准shader,带有简单的顶点动画。
动画中,草来回摆动,并带有一些向外的震动。

我们通过顶点颜色(vertex colors)来控制动画。
对于基础的动画,我们使用一个红色-黑色的渐变,只有树叶的末端有动画,根部会保持原地。
动画越复杂那么颜色越复杂。


一个好的树枝动画应基于曲线(wave)。
在这个graph中,使用了sine曲线,随着时间变化对应不同的值。
黑线是sine曲线的原型,红线是我们修正过的sine曲线。


蓝色的震动曲线是基于sine曲线的另一个修改版本。
在红色曲线的振幅和移动速度中,蓝色曲线受到红色曲线的移动速度影响更大。
蓝色曲线提供一个随机的摇摆值,可以给红色曲线的顶端提供小幅度摆动。

我们将两种曲线相加,并于指定的顶点颜色相乘,也就是植物上的红色区域。然后将曲线添加到物体的位置以制造顶点偏移。
这里我们只创建了x方向的偏移,对于任何方向都可以用这种方法。
活得最终输出并注入到Master node的Position槽位,我们就获得了一个简单漂亮的随风摇摆的树枝动画。

Complex Vegetation Graph 复杂的植物动画


关注成长,注重因果。