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:
新建材质

  1. 新建Shader:这里在Project里右击Create - Shader - PBR Graph:并命名
    在这里插入图片描述
    ***///**下面开始关键的步骤:绘制Graph:
  2. 双击我们新建的Shader文件,打开绘制界面:
    然后找到PBR Master管理器,这是我们最后的输出,这里我们要使用的是“Albedo”、“Normal”、“Smoothness”三个功能:
    在这里插入图片描述
  3. 建立我们要使用的变量(这里的变量我们可以在外部调节):
    a.两个Color变量:命名ColorA、ColorB(设置喜欢的蓝色作为海水的主色);
    b.一个Texture2D变量,用来放置海水贴图;
    c. 三个Veter1型的数值变量,用来调节各强度,分别命名为:offsetSpeed(用来设置动画速度)、NormalStrength(作为法线强度)、Smooth(平滑度)、Tiling(贴图的重复使用率):
    在这里插入图片描述
    在这里插入图片描述
  4. 在工作空白区域右击新建节点,分别新建菲涅尔反射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上。
  5. 其中一条管线如下图所示:
    在这里插入图片描述
    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.1-8.2
    8.3 新建Sample Texture2D节点,Tiling And Offset 输出乘以Tiling向量赋给UV端口,将Texture2D变量赋值给Texture,Tiling的输出与变量相乘的结果输入到UV节点,然后将得到的RGBA结果输入新建的NormalStrength节点进行法线增强,Strength端口输入我们之前建立的NormalStrength变量:
    在这里插入图片描述
  6. 以相同的方式构建另一条贴图管线,这里注意变换的方向应与上一步的方向相反:
    在这里插入图片描述
  7. 两条管线贴图效果进行法线融合,并将最后结果给到Normal:
    在这里插入图片描述
    **********保存,关闭Graph
    11.将建立好的Shader拖给我们建立的Water材质,并给材质附着贴图。可以直接将下面的贴图保存后拖到unity工程里:在这里插入图片描述
    在这里插入图片描述
  8. 此时左侧可以观察效果了:
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42434073/article/details/111246934