当前位置: 首页 > 手游 > 曙光英雄

Shader Graph 全新升级,示例项目教你制作海水和瀑布

来源:网络 时间:2023-08-29 04:37:27
导读在 Unity 2020.2 中,我们推出了一系列改进美术工作流的新功能和内容,包括全新 Graph Inspector 检视器和 Graph 编辑器性能,全面改进了用户体验。 作为 Graph 的末端,包含多种功能模块的 Master Stack 主节点堆…

在 Unity 2020.2 中,我们推出了一系列改进美术工作流的新功能和内容,包括全新 Graph Inspector 检视器和 Graph 编辑器性能,全面改进了用户体验。

作为 Graph 的末端,包含多种功能模块的 Master Stack 主节点堆栈取代了原本功能单一的 Master Node 主节点。Master Stack 定义了着色器最终外观,用户可借助新的堆栈理解顶点(Vertex)与片元(Fragment)渲染阶段运算间的关系。

图表检视器(Graph Inspector)将 Master Node 和图表中其他节点的设置整合至一处,并且还能设置活跃渲染目标和着色模式。

下方视频大致介绍了 Shader Graph 的所有更新。

全新的示例项目

为了帮助用户上手新的 Master Stack 功能,我们制作了一个示例项目,在 GitHub 上提供下载。接下来,我将逐步介绍项目、展示一些示例。

示例项目下载地址:

https://github.com/Unity-Technologies/ShaderGraph-MasterStack-Samples

项目使用了 Unity 通用渲染管线(URP)制作,内含一个海滩微型景观,有两种由 Shader Graph 制作的水体,即悬崖边的瀑布、岛屿周围的海水。完整的示例场景可在 Asset > Scenes > MasterStackDemoScene 中找到。

接下来我们来仔细看看怎样使用新的 Master Stack 构建水体着色器。

01 瀑布的制作

瀑布着色器的制作主要涉及基本颜色通道和 Alpha 通道。使用 Voronoi 节点生成纹理的同时,偏移和平铺瀑布模型的 UV 形成水流,再使用两个一减去(One Minus)节点遮住 Alpha 通道中的网格边缘,让瀑布看起来更自然。

02 海水的制作

在编辑实际图表之前,我们首先需要考虑着色器应具备哪些基本属性。首先,水必须要有颜色,接着需要有波浪和潮汐等元素才能显得生动,水面的反射也非常重要,同时,水在接触海滩的地方会出现一些泡沫。最后,如果有水深效果会更好,可以与靠近海岸线的部分形成对比。

在确定了着色器所需具备的属性后,我们来在示例着色器中了解下怎样做出想要的效果。

首先,在海水底部涂上玻璃色。海水着色器使用四种颜色属性,两种控制总体颜色渐变,另外两种作为深水和浅水颜色,深浅过渡由深度值控制,详细的将在随后讨论。

接下来,让我们回顾一下借助顶点位移来实现的潮汐。新的 Master Node 会分别显示顶点(Vertex)和碎片(Fragment)着色器,清楚区分出影响顶点的节点,简化了图表的更新流程。

在这部分 Shader Graph 中,顶点在 y 轴上位移,而移动的强度和频率可使用属性控制,在潮汐频率上使用渐变噪波节点(Gradient Noise Node)则能让频率更加多变。

要想实现水面涟漪的视觉效果,可以在相反方向上铺开两张法线贴图,用时间控制平铺的速度。

现在让我们看一下怎样实现水面的反射和水深效果。

水面的反射可借助着色器的光滑度来实现。光滑度通常有两个值,一个用于设置顶部水面,另一个用于设置水体的侧边。

在使用着色器建立水深之前,一定要检查深度纹理(Depth Texture)是否为项目中的渲染资源。深度纹理(Depth Texture)选项可在管线资源的常规(General)选项中找到,项目使用的渲染管线配置文件可在 Edit > Project Setting > Graphics > Scriptable Render Pipeline Asset 找到。

在启用深度纹理(Depth Texture)后,我们就能继续为水体着色器加入深度了。

水深可使用场景深度节点(Scene Depth)、屏幕位置节点(Screen Position)和摄像机远平面距离来计算。Shader Graph 的黑板上还有几个额外的深度属性,方便在材质检视器中控制,深度值可使用线性插值节点(Lerp)来补充深水和浅水像素。

除了深水色和浅水色外,受深度影响的还有泡沫。这里深度值需要取反值,因为水面与硬表面相碰时才会出现泡沫,反值可使用一减去(One Minus)节点获得。

到这所有的关键属性就都介绍完毕了,你可以在项目中随意探索、做出自己的修改。

注意,旧版本的着色器图表在 10.0 或更高版本的 Shader Graph 编辑器中打开时,主节点会升级为 Master Stack 主节点堆栈。我们还发布了一篇升级指南,详细说明了项目的升级方法。

升级指南:

https://docs.unity3d.com/Packages/com.unity.shadergraph@10.1/manual/Upgrade-Guide-10-0-x.html

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:704559159@qq.com

Top
加盟网