原视频教程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:并命名
***///**关键步骤如下:绘制Graph: 双击我们新建的Shader打开绘制界面: 然后找到PBR Master管理器,这是我们的最终输出,我们在这里使用的是Albedo”、“Normal”、“Smoothness”三个功能:
建立我们需要使用的变量(我们可以在外部调整这里的变量): a.两个Color变量:命名ColorA、ColorB(以最喜欢的蓝色为海水主色); b.一个Texture2D用于放置海水贴图的变量; c. 三个Veter用于调整各强度的1型数值变量,分别命名为: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