当前位置: 首页 > article >正文

Unity Shader Graph 2D - Procedural程序化图形之渐变的正弦波形

前言

        正弦波形也是一种常用、常见的程序化图形,合理的使用正弦波形会创作出一些有趣、美观和丰富的效果,本文将使用Unity Shader Graph来实现一个正弦波形效果,帮助理解和实践Unity Shader Graph以及正弦函数。


        创建一个名为SineWave的Shader Graph文件,对应创建一个M_SineWave的材质球,再创建一个名为MainTex的基础Texture2D类型变量做默认输入。

创建正弦波形

        首先使用UV节点将坐标归零处理,减去一个(0.5,0.5)的二维向量偏移,将起点从UV的左下角移动到中心点位置,并将其坐标拆分出来X轴和Y轴,节点如下。

        创建一个Float类型的变量名为Repetition用来控制正弦波重复的波形数量,然后再做一个Fraction处理(重复从0到1取值),然后乘以2π(正弦函数的周期为2π)获得一个周期,将结果输入到Sine节点,节点如下。

        创建一个Float类型的变量名为Height用来控制正弦波的高度,与Sine节点的输出相乘,再将结果输入到Edge,再将Y轴坐标数据输入到In里,就获得了一个周期的正弦波,节点如下。

获得正弦波线条

        创建一个Float类型的变量名为LineWidth用来控制正弦波线条的宽度,用Y轴减去这个宽度,将上个高度控制后的输出结果输入到一个新的Step节点的Edge里,然后将减去宽度后的Y轴数据输入到In中,节点如下。

        将两个Step节点结果相减获得正弦波线条,节点如下所示。

将正弦波动起来

        创建一个时间节点和一个Float类型的速度变量,速度取反用来做正向移动,两个相乘,再叠加到X轴上,将其结果输入到和Repetition相乘的输入里,节点如下。

        这样正弦波就可以动起来了,效果如下。

给正弦波加一个渐变颜色

        单一的颜色加上去已经开始显得有点单调了,这次我们给正弦波加一个渐变颜色,原理很简单就是设定两个颜色变量,用一个插值节点将两个颜色变量连接起来,基于X轴的坐标来进行一个过渡,再将渐变颜色的输出与正弦波相乘获得最终带颜色的正弦波,然后将带颜色的正弦波数据输入到最终的颜色数据上,节点如下。

最终效果

        最后在Unity编辑器里面呈现的效果如下的动态图所示,一个渐变颜色带动画的正弦波就完成了!


http://www.kler.cn/a/550016.html

相关文章:

  • ElasticSearch详解
  • 【python语言应用】最新全流程Python编程、机器学习与深度学习实践技术应用(帮助你快速了解和入门 Python)
  • 在c#中虚方法和抽象类的区别
  • 网络接收的流程理解
  • WEB安全--SQL注入--堆叠注入
  • Windows搭建CUDA大模型Docker环境
  • RocketMQ与kafka如何解决消息丢失问题?
  • Prometheus+Grafana+Jmeter监控服务器资源及中间件
  • 使用pyCharm创建Django项目
  • 4-制作UI
  • 推荐一些经典和实用的开源项目
  • leetcode 子集
  • Spring 和 Spring MVC 的关系是什么?
  • Windows 11 安装 Docker
  • 【线性代数】2矩阵
  • 【SQL server】存储过程模板
  • 【deepseek与chatGPT辩论】辩论题: “人工智能是否应当具备自主决策能力?”
  • 【我与开源】 | 我的开源印象
  • UNET改进63:添加DTAB模块|强大的局部拟合和全局视角能力
  • JAVA泛型介绍与举例