MMD联动Unity学习笔记 Vol.20 ShaderGraph制作裂纹冰
前言
这期我们的主题继续学习ShaderGraph,我们用着色器编辑器来制作裂纹冰的效果。这次的笔记内容来自油管,需要下载一些纹理。我会把纹理的包放在网盘里,有需要的小伙伴可以去下载。

具体操作
我们使用LWRP管线,前期要进行一些设置,请参考前面几期笔记内容,这里不多赘述。
新建Texture文件夹,导入纹理资源。将其中的法线贴图高为Normal map。

在Asset Store里面搜索Free HDR Sky并导入。增加高清渲染管线,在项目设置的图形里面将可编程渲染管线设置改为刚才创建的LWRP。

在窗口>渲染>灯光设置里面,在环境下的天空材质下,选择Skybox_Daytime。
创建一个新的材质,命名为CrackedIce,再创建一个新的PBR Shader,命名为IceGraph,将它拖给刚才的材质。在场景中新建一个Plane,将材质附给它。
双击刚才创建的Shader,打开着色器编辑器,在空区域创建一个Sample Texture 2D的节点,把它的RGBA连接以Albedo端口上,给纹理节点的纹理设置为Cracked_Ice_D,再创建一个Sample Texture 2D的节点,给纹理节点的纹理设置为Cracked_Ice_N,Type设置为Normal,将它的RGBA连接到Normal端口上。然后保存设置。

创建新的节点,选择View Direction,Space设置为Tangent,再创建一个Sample Texture 2D的节点,给纹理节点的纹理设置为Cracked_Ice_Mask,再创建Tilling And Offset节点和Mulitiply节点,将View Direction连接到Multiply的B端口,新建一个Vector1参数,命名为paralaxOffset,参数值设为-0.05,拖出黑板,把它连接到Multiply的A端口。把Multiply的Out端口连接到Tilling And Offset的Offset端口上,Tilling And Offset的Out端口连到Sample Texture 2D的UV端口。

Sample Texture 2D的RGBA端口连接到Invert Colors的In端口,Invert Colors的Out端口连接到新建的Blender的Blend端口,勾选红绿蓝。

将第一个Sample Texture 2D的节点的RGBA端口连接到Blend的Base端口上。将Blend的节点的Opacity设置为0.6,最后将Blend节点的Out端口连接到Albedo上。
新建Texture 2D Asset节点,连接到纹理设置为这里Cracked_Ice_Mask的纹理节点,然后将这部分的节点划分为Sub Graph,命名为SimpleParallax.shadersubgraph。

增加Add节点,连接到parallax到纹理节点的中间,增加Vector1和Lerp节点,给纹理节点Out连接出来。再将这部分复制。向下粘贴九份。

将最上面的Add的输出端口连接下面Add的A端口,parallaxOffset再连接下面Add的B端口,Texture 2D Asset连接所有Sub节点的Texture 2D Asset端口,如下图。

Lerp的T端口的X值从上至下依次输入0.1-1.0,在最下面创建Multiply节点。

然后依次向上再次创建乘法节点连接十次。

保存后,观察场景的效果。

设置parallaxOffset的值为-0.003。
回到图表,在下面创建2D纹理贴图,附给Cracked_Ice_R贴图,创建Invert Color节点,将刚才的纹理贴图的RGBA连接到它的In端口,勾选红绿蓝和Alpha,将它的Out端口连接到主节点的Smoothness端口,将主节点的Metallic的值设为0。再创建一个Blend节点,将它的Base连接到反向颜色节点的Out,再将它的Out连接到主节点的Smoothness端口。
复制SimpleParallax这个Sub着色器,将它的2D纹理资源设为PerlinNoise.png(这个资源文件夹里面没有,可以在网上搜索),parallaxOffset设置为-0.05。
复制Blend节点,将不透明度设为0.6,将复制的SimpleParallax的Out端口连接到Blend节点的Blend端口。
我们再复制一下Cracked_Ice的法线贴图,将贴图设置为Snow_Mask_Normal,将两张法线贴图用Normal Blend混合再输出到主节点的Normal端口。

再添加一张2D纹理贴图,贴图设置为Snow_Mask,再添加一个Add节点,将Snow_Mask输出到端口B,再将与Albedo连接的线连接到Add的A端口,再将Add节点的Out端口连接到主节点的Albedo端口。
再添加一个Add节点,将Roughness和Mask的贴图节点相加,输出到反射颜色节点,保存。

这样裂缝冰又加上的雪的效果。


