Unity学习笔记--unity中使用ShaderGraphs制作海水UV动画效果

原视频教程B站链接:https://www.bilibili.com/video/BV1wg4y1B7YE?from=search&seid=6430656672554073184
还没有太入门Shader部分,CG语言对我来说还是不好记忆,今天跟着网上的教程使用ShaderGraph制作海水的效果,觉得PBR Graph还是容易上手的,尤其对于我这样的弱代码人员。
首先看下本次的完成效果:

开始制作环节:
1. 打开hub管理器,新建项目,这里选择轻量级渲染管线场景,并输入名称:

2. 在Hierarchy窗口依次拼接平面Plane:


3. Project里新建材质Material:

 


新建Shader:这里在Project里右击Create - Shader - PBR Graph:并命名

扫描二维码关注公众号,回复: 14282182 查看本文章

***///**下面开始关键的步骤:绘制Graph:
双击我们新建的Shader文件,打开绘制界面:
然后找到PBR Master管理器,这是我们最后的输出,这里我们要使用的是“Albedo”、“Normal”、“Smoothness”三个功能:

建立我们要使用的变量(这里的变量我们可以在外部调节):
a.两个Color变量:命名ColorA、ColorB(设置喜欢的蓝色作为海水的主色);
b.一个Texture2D变量,用来放置海水贴图;
c. 三个Veter1型的数值变量,用来调节各强度,分别命名为:offsetSpeed(用来设置动画速度)、NormalStrength(作为法线强度)、Smooth(平滑度)、Tiling(贴图的重复使用率):


在工作空白区域右击新建节点,分别新建菲涅尔反射Fresnel Effect、线性差值Lerp节点,并将上步新建的ColorA与ColorB拖到工作区进行连接:

******///我们的UV贴图有两个相反方向的图片移动效果,才能体现出水波的效果,因此我们也建立两条管线:
补充:贴图世界坐标(XYZW)与像素值(RGBA)对应UV关系:X-R-U,Y-G-V,Z-B,W-A; 我们的unity场景中海水面在X-Z平面上,因此 我们使用R B 对应到UV上。
其中一条管线如下图所示:

8.1 插入Position节点,将其使用Split节点分割为RGBA像素坐标上,注意分割后输出的应该是R坐标与G坐标,并进行Combine结合(再转化为R-G才能对应为U-V值),并输入到Tiling And Offset节点上进行贴图的重复应用;
8.2 动画要体现出“动”的效果,因此建立Time节点与方向Vector2节点,将Vector2节点的x值设置为-1(波纹方向),Time的Time(1)与Vector2使用Multiply节点相乘,再使用相乘节点乘一个我们之前设置的offsetSpeed变量用来调节幅度;并将结果输入到上步Tiling And Offset节点的Offset端口上;

8.3 新建Sample Texture2D节点,Tiling And Offset 输出乘以Tiling向量赋给UV端口,将Texture2D变量赋值给Texture,Tiling的输出与变量相乘的结果输入到UV节点,然后将得到的RGBA结果输入新建的NormalStrength节点进行法线增强,Strength端口输入我们之前建立的NormalStrength变量:

以相同的方式构建另一条贴图管线,这里注意变换的方向应与上一步的方向相反:

两条管线贴图效果进行法线融合,并将最后结果给到Normal:

**********保存,关闭Graph
11.将建立好的Shader拖给我们建立的Water材质,并给材质附着贴图。可以直接将下面的贴图保存后拖到unity工程里:

此时左侧可以观察效果了:

————————————————
版权声明:本文为CSDN博主「秋瞑小雁客」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42434073/article/details/111246934

猜你喜欢

转载自blog.csdn.net/qq_21743659/article/details/125318290
今日推荐