1.首先我们在shader文件夹下新建一个blank shader graph
操作:右键-create-shader-blank shader graph
2.然后在inspector面板中点击open进入
3.找到shadergraph面板右上角的graph inspector,点一下会出来下面这个面板,再点一下它会消失。
点击下universal下面的这个小加号,添加universal,然后就会出来下面这个面板。
上面的是顶点面板,下面的是碎片面板。UV流动我们只需要用到碎片面板的base color功能。
4.左上角会有一个面板,对应blackboard图标。如果你这个面板不见了点一下blackboard它就出来了。我们需要添加这三个参数(color、texture2D、vector4),右上角加号可以在blackboard中添加参数,单击可以重命名。
修改参数设置可以先单击参数,再点击graph inspector,就可以更改图片和颜色以及数字信息了。
注意:默认的颜色模式是default,如果你想要让你的颜色更亮,需要修改mode为HDR模式。
HDR模式仅存在于URP管线和HDRP管线中,如果你的场景是普通3D场景,是没有这个选项的。
把exposed勾选上,这样可以在shader 材质球中更改这些信息。
5.然后我们开始添加主图模块(Main Texture)
右键添加上图中这些节点,然后连起来就行了,线和图片的删除是选中然后Delete。
sample texture 2D的左边有三个节点,我们只需要用到上面两个。
左边:
texture连到黑板上的main texture,UV连到tilling and offset 的output上。
右边:
RGBA是所有通道信息。R\G\B\A分别代表red、green、blue、alpha通道信息。
因为要添加颜色的信息,所以我们添加一个multiply面板,将color和sample texture 2D的output相乘,连到Fragmet面板的basecolor上。
6.添加tilling and offset 模块
这里解释下为什么要这样连接
因为tilling和offset都有两个方向可以调节,你可以分别给这两个节点两个vector2(2维向量)
这里是把vector4分开(split)成两组再组合(combine)成二维向量连到这两个节点上,前两个R、G连的是tilling,后两个B、A连的是offset。
这样做就是这些参数都会出现在一行里面,你可以取名tilling and offset
如果你连两个二维向量就是出现两行,你可以分别取名tilling \offset
7.一些基本操作
快捷键F:回到shadergraph面板中心
点击节点+快捷键F:快速回到该节点中心
在空白面板处点击右键-collapse all preview:关闭所有节点预览
在节点上右键-open documentation:打开官方说明书
框选所需节点,在蓝色框内右键-group selection:类似于ps的成组功能
测试节点:preview、slider--非常实用
8.由于教程使用的是2018版本,而2020版本的unity没有alpha和alphaclipthreshold这两个结点,右键搜索也没有找到(百度搜了半天也没人科普,官方手册missing...)
后来我发现它在graph inspector里面:勾选上alpha clip选项就出来啦
material模式:发光材质lit;不发光材质unlit
workflow模式:specular镜面;metallic金属
surface模式:opaque不透明;transparent半透明
然后我们创建一个preview节点和float节点,将float节点的模式改成slide,就可以在inspector里手动溶解了。以纹理贴图的单通道作为溶解贴图会使溶解顺着贴图纹理,看起来更加自然。
原理:alphaclipthreshold是alpha通道的剪裁阈值,当alpha通道里面的色彩信息小于阈值的色彩信息的时候,小于的部分就会被剪裁掉。我的理解是类似于ps里面的阈值选区功能。
9.边缘发光溶解shader
dissolve部分
原理:
sintime正弦函数的值范围是-1~1之间,导入remap输出0~1之间的值
sintime+remap这两步可以导出一个在0~1之间循环波动的一个时间值x
step节点:Returns 1 if the value of input In is greater than or equal to the value of input Edge, otherwise returns 0.当输入的值大于等于输入的edge的色彩信息的时候输出1,否则输出0。这是一个非黑即白的函数。这个操作可以将噪波贴图处理成黑白关系清晰的图片。
时间值x加上一个常量t---输出一个滞后的时间值y
时间值y导入到step节点中就会让输出的图形比alpha通道输出的图形不一致
如果这个常量t是一个很小的数字,那么我们就能得到一个比alpha通道输出的图形略大一点的图形
再将这个图形导入到emission通道,就能获得边缘发光效果。