[材质贴图] Unity2018 Shader Graph 学习笔记(一) ShaderGraph简介

查看:1058 |回复:5 | 2021-11-2 20:00:35

您需要 登录 才可以下载或查看,没有账号?注册

x
      Unity2018 为用户提供了更加灵活的可编程渲染管线SRP以及可视化Shader工具——ShaderGraph。 这个专栏主要会讲解Unity的官方的ShaderGraph示例以及我自己的一点儿使用UnityShader的经验来完成的游戏中可能用到的渲染效果。希望能给想要学习UnityShader或者已经有了一部分UnityShader使用经验的同学一些启发,也希望大家能和我一起交流学习,共同进步。



     那么首先先来简单说明一下ShaderGraph和传统的UnityShaderLab之前有什么联系和区别吧。 在Unity2018之前,我们需要创建一个shader文件,在里面写很多的代码来创建我们的shader。而现在,我们只需要用一个编辑器,通过可视化的方式,不用记住许多复杂的指令指示就可以完成我们的shader的编辑。一个最简单的没有光照的shadergraph编辑界面如下。

v2-e56d6da9290a0b80a973e3f9ed4595de_720w.jpg
最简单的shadergraph

      在上面这个shadergraph中,有一个叫做BlackBoard的面板,这个面板基本相当于ShaderLab中的Properties块。在这里我们定义了一个最基本的_MainTex贴图,并且将一张蒙娜丽莎的图片作为默认值赋予这个贴图属性。

v2-4f1ddafa2e8ff1f67a214abfeb62d46e_720w.png
一张赋予了蒙娜丽莎贴图作为默认值的贴图属性

        在中间的区域,是我们shadergraph的主体区域,定义了我们如何算出最终的着色结果。这部分更像Unity为我们提供的表面着色器。在这个着色器中,我们将一些Unity指定的属性输入到面板之中,例如片段的颜色等。然后Unity会将正确的渲染结果显示到屏幕上。目前Unity的shadergraph支持的LWRP管线提供了两个输出结果的控制器(在shadergraph中称作Master),其中一个是不计算光照的shader,也就是我们上面绘制蒙娜丽莎所用到的shader,这个MasterNode的属性如下图所示

首先是一个Vec3 Color,这个就是片段最基本的颜色属性,然后是一个Alpha值,如果有需要Alpha测试,还提供了一个AlphaClipThreshold属性进行Alpha测试。除此之外,节点上还有简单的控制表面属性(Opaque/Transparent)和混合模式以及是否剔除的控制选项。我们要做的就是通过属性面板(BlackBoard中定义的内容例如贴图)以及ShaderGraph中内建的一些节点(也可以自己定义节点)将正确的输入传入这个MasterNode中。一个最简单的根据第一套uv采样的shadergraph如下所示



我们将_MainTex贴图通过SampleTexture2D这样一个内置的节点和uv0作用进行采样,将采样后的颜色值vec4赋值给MasterNode中的Color节点。由于我们的图是不包含透明通道的,因此我们不需要修改Alpha的值也不需要进行Alpha测试。



最后,ShaderGraph中提供了一个渲染结果的输出预览面板,在这个面板中,我们可以使用一些基本的元素例如Quad,Sphere或者工程中存在的Mesh进行渲染结果的预览。

Quad
Custom Mesh


这样,一个简单的shadergraph就完成了。除了Unlit方式之外,ShaderGraph还提供了一种使用光照进行渲染的graph——PBRGraph。他和Unlit方式在编辑界面的唯一区别就是MasterNode的属性。增加了许多和光照相关的属性例如法线等。



可以看出来上面所定义的属性和UnityStandardShader比较类似,都是使用了PBR渲染的光照计算。不过Unity的LWRP渲染管线中的PBR所使用的一些计算函数相对于UnityStandardShader计算量上面有所缩减,相对来说更加适合低性能的设备。



那么ShaderGraph适用于什么样的场景呢?我的体验是这样的,ShaderGraph更适合于搭建应用于某个场景中元素的特殊效果,编辑起来方便快捷,不需要写代码,部分美术人员经过学习也有可能很好的进行编辑,降低美术和程序之间的沟通成本。例如需要在场景中增加一个带uv动画的Quad,美术人员可以通过shadergraph方便的实现,而不需要和程序进行沟通。



本篇文章对shaderlab进行了一些基础的介绍和使用场景和方法的推荐。下一次更新将结合ShaderLab官方的一个老旧电视机条纹波动的效果和大家一起分析如何利用shadergraph实现这个效果。希望感兴趣的同学多多关注。





2021-11-2 20:00:35  
 赞 赞 0

使用道具 登录

5个回答,把该问题分享到群,邀请大神一起回答。
2#
名画 蒙娜丽莎
回复 收起回复
2021-11-25 09:51:24   回复
 赞 赞 0

使用道具 登录

3#
蒙娜丽莎
回复 收起回复
2021-12-10 09:44:54   回复
 赞 赞 0

使用道具 登录

4#
感谢大佬分享
回复 收起回复
2022-9-28 16:56:43   回复
 赞 赞 0

使用道具 登录

5#
资源甚好,发帖艰辛,且阅且珍惜。
回复 收起回复
2022-10-21 15:17:21   回复
 赞 赞 0

使用道具 登录

6#
资源甚好,发帖艰辛,且阅且珍惜。
回复 收起回复
2023-6-18 00:06:29   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

unityShader Graph
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表