【Unity】从零使用ShaderGraph - 花草简单摇曳效果

本文介绍了如何在Unity中通过UniversalRP项目设置和ShaderGraph创建材质,实现2D游戏中植物随风摇曳的效果。重点讲解了Position、Time、Noise节点在顶点着色阶段的应用,以及如何利用渐变贴图控制顶点偏移。
摘要由CSDN通过智能技术生成
搭建环境:

● 创建一个URP项目或通过UPM安装Universal RP。
● Editor - Project Setting - Graphic - Scriptable Render Pipeline Settings配置。

创建材质:

● 新建一个Shader Graph,选择Unlit Shader。(Unlit就是不受光照影响,减少一些干扰配置项。)

在这里插入图片描述

● 找到创建好的ShaderGraph文件,右键创建Material。
● 创建一个Sprite Renderer,把材质先挂上去,方便边做边观察。

在这里插入图片描述

初步实现:

今天我们来尝试制作一个2D游戏中,花草树木等风吹摇曳的效果。
思路讲解:

按照我们之前的学习方法,第一步还是去思考,现实中花草随风飘动的特点:

  • 根部基本不会动,越靠近上方边缘的地方浮动越大。
  • 方向不确定。
  • 速度通常较低。

因为本章shader较之前的稍微复杂,所有采用分解的方式来讲解。有了上面的思路,我们基本可以确定几个之前学过重要的节点。

  • Time节点:粗暴的说会动的shader几乎都用它。
  • Noise节点:粗暴的说有随机内容的shader大概率会用它。

那么我们了解Shader渲染过程包含顶点着色阶段与片元着色阶段,今天的效果主要产生在顶点着色阶段,因为我们采用的是顶点位置偏移的方式来实现,因此介绍一个新节点:

  • Position节点: 保证基本图形内容不变的情况下,顶点位置发生偏移的时候基本都会用到它。

既然主要在顶点着色中实现,那么片元着色部分就简单带过,具体如下,贴图采样以后,颜色与透明度赋给片元着色器即可:
在这里插入图片描述

第二步,顶点偏移如何实现呢?实际上,原理也非常容易理解,我们还是拆分的来看:

在这里插入图片描述

Position节点获取到顶点位置以后,通过Transform节点来讲Object坐标转换到了世界坐标,然后通过Add节点给他加一个值,使顶点坐标产生了变化,然后再通过Transform节点转换回Object坐标,最后赋给顶点着色器。

跟进实现

到此为止,顶点偏移原理在ShaderGraph中的实现已经足够理解了。接下要你要知道的,只剩下一件事情,那就是让顶点坐标随机移动。然后将结果连接到上述Add节点即可。

该部分的内容如下:

在这里插入图片描述

  • Time和Noise节点来进行的就是循环与随机的控制,联系前面的文章理解即可。
  • 其他的比如windDir和windSpeed是控制变量,控制方向与速度以及归一化之类的。
  • 重要要说的是这个顶点贴图,我们上文中提到了,摇曳是根部不动,上方移动。我们又知道在shader中,黑色为0,白色为1,从1 - 0也就是从有到无的过程,那么我们就能得出,我们需要的是一张由上至下的白到黑色渐变贴图。这样顶部就是1,底部就是0了:(白话的说就是越靠近底部数值越小,根部为0参与计算相乘后也是0了,不会产生任何变化。)
    在这里插入图片描述

至此,基本的效果已经可以看到了。

最终ShaderGraph展示:

在这里插入图片描述

效果展示:

请添加图片描述

总结:

顶点偏移可以用于实现许多类似于摇曳、摆动等动画。控制顶点位置则可以使用顶点色贴图。Position节点、Time节点、Noise节点是实现该效果的核心节点。

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值