Unity shader实现顶点动画波动效果

 更新时间:2020年04月29日 11:51:58   作者:elegentbeauty  
这篇文章主要为大家详细介绍了Unity shader实现顶点动画波动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Unity shader实现顶点动画的具体代码,供大家参考,具体内容如下

需要了解的背景知识:

波动实例:y=  Asin(ωx+φ)

φ:决定波形与X轴位置关系或横向移动距离(左加右减)

ω:决定周期(最小正周期T=2Π/|ω|)

A:决定峰值(纵向拉伸压缩的倍数)

顶点着色器的主要计算:

1.顶点位置

2.矩阵转换

片段着色器

1.纹理寻址

2.灯光作用

_Time表示时间周期 float4(t/20,  t,  t*2,  t*3)

Shader "Custom/Wave" {
 Properties {
 
 _MainTex("Texture", 2D) = "white"{} //纹理
 _Arange("Amplitute", float) = 1
 _Frequency("Frequency", float) = 2//波动频率
 _Speed("Speed",float) = 0.5//控制纹理移动的速度
 
 }
 
 SubShader
 {
 Pass
 { 
 CGPROGRAM
 #pragma vertex vert
 #pragma fragment frag
 #include "UnityCG.cginc"
 
 struct appdata
 {
 float4 vertex:POSITION;
 float2 uv:TEXCOORD0;
 };
 
 struct v2f
 {
 float2 uv:TEXCOORD0;
 float4 vertex:SV_POSITION;
 };
 
 float _Frequency;
 float _Arange;
 float _Speed;
 
 v2f vert(appdata v)
 {
 v2f o;
 
 float timer = _Time.y *_Speed;
 //变化之前做一个波动 y= Asin(ωx+φ)
 float waver = _Arange*sin(timer + v.vertex.x *_Frequency);
 v.vertex.y = v.vertex.y + waver;
 o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
 o.uv = v.uv;;
 return o;
 }
 
 sampler2D _MainTex;
 
 fixed4 frag(v2f i) :SV_Target
 {
 fixed4 col = tex2D(_MainTex, i.uv);
 return col;
 } 
 
 ENDCG
 }
 }
 
 FallBack "Diffuse"
}

运行效果图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • 用C#的params关键字实现方法形参个数可变示例

    用C#的params关键字实现方法形参个数可变示例

    params关键字以实现方法形参个数可变是C#语法的一大优点,下面是用C#中的params关键字实现方法形参个数可变
    2014-09-09
  • C#多线程系列之多阶段并行线程

    C#多线程系列之多阶段并行线程

    本文详细讲解了C#多线程的多阶段并行线程,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • C#实现动态生成表格的方法

    C#实现动态生成表格的方法

    这篇文章主要介绍了C#实现动态生成表格的方法,是C#程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • C#中简单的装箱操作实例分析

    C#中简单的装箱操作实例分析

    这篇文章主要介绍了C#中简单的装箱操作,实例分析了C#中装箱操作的概念、用法与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C#跨平台开发之使用C/C++生成的动态链接库

    C#跨平台开发之使用C/C++生成的动态链接库

    这篇文章介绍了C#跨平台开发之使用C/C++生成的动态链接库,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • C#中winform控制textbox输入只能为数字的方法

    C#中winform控制textbox输入只能为数字的方法

    这篇文章主要介绍了C#中winform控制textbox输入只能为数字的方法,包括使用keyPress事件限制键盘输入以及TextChanged事件限制粘贴等情况,来实现控制输入为数字的功能,需要的朋友可以参考下
    2015-01-01
  • C#实现的文件批量重命名功能示例

    C#实现的文件批量重命名功能示例

    这篇文章主要介绍了C#实现的文件批量重命名功能,结合具体实例形式分析了C#针对文件的遍历、属性修改相关操作技巧,需要的朋友可以参考下
    2017-07-07
  • c# 对CSV文件操作(写入、读取、修改)

    c# 对CSV文件操作(写入、读取、修改)

    这篇文章主要介绍了c# 如何对CSV文件操作,帮助大家更好的理解和学习C#,感兴趣的朋友可以了解下
    2020-08-08
  • C#使用Twain协议开发一个高扫仪对接功能

    C#使用Twain协议开发一个高扫仪对接功能

    这篇文章主要为大家详细介绍了C#如何使用Twain协议开发一个高扫仪对接功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • C#将图片存放到SQL SERVER数据库中的方法

    C#将图片存放到SQL SERVER数据库中的方法

    这篇文章主要介绍了C#将图片存放到SQL SERVER数据库中的方法,以实例形式较为详细的分析了C#保存图片到SQL Server数据库的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09

最新评论