当前位置: 首页 > 编程笔记 >

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

尹雅健
2023-03-14
本文向大家介绍Unity shader实现顶点动画波动效果,包括了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"
}

运行效果图如下:

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

 类似资料:
  • 本文向大家介绍iOS 水波纹动画的实现效果,包括了iOS 水波纹动画的实现效果的使用技巧和注意事项,需要的朋友参考一下 本人最近在研究iOS动画,至于原理,我不在这里说了。毕竟这里的标题:水波纹的实现。 在这里,要学习水波纹的实现,首先要知道以下几点知识: 1.正弦函数:y = Asin(wx +b) + c。相信大家都比较熟悉。 2.CAShapeLayer的简单实用,相信看一下,就是知道其大概

  • 本文向大家介绍iOS实现点赞动画特效,包括了iOS实现点赞动画特效的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS实现点赞动画特效的具体代码,供大家参考,具体内容如下 动画的基本使用 动画的实现基本上是基于对View控件和View的layer属性进行操作,对视图进行移动,尺寸变换,透明度变换,旋转等一系列操作。 关键帧动画: 动画的实现可以分为两个部分,一部分是规定动画的变化内

  • 本文向大家介绍iOS实现抖音点赞动画效果,包括了iOS实现抖音点赞动画效果的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了iOS实现抖音点赞动画的具体代码,供大家参考,具体内容如下 1. 概述 最近看到抖音点赞爱心的动画效果比较好,出于好奇,自己也研究仿照动画效果写了一个,不喜欢的朋友可不要喷我噢!!! 话不多说,先来看一下执行效果。 2. 动画分析 上面的示例效果有点快,现在来看一

  • 本文向大家介绍Android 自定义view实现水波纹动画效果,包括了Android 自定义view实现水波纹动画效果的使用技巧和注意事项,需要的朋友参考一下 在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果,兴致高昂的来找你,看了之后目的很明确,当然就是希望你能给她; 在这样的关键时候,身子板就一定得硬了,可千万别说不行,爷们儿怎么能说不行呢;

  • 在这里,我们将动态画面简称为动画(animation)。正如动画片的原理一样,动画的本质是利用了人眼的视觉暂留特性,快速地变换画面,从而产生物体在运动的假象。而对于Three.js程序而言,动画的实现也是通过在每秒中多次重绘画面实现的。 为了衡量画面切换速度,引入了每秒帧数FPS(Frames Per Second)的概念,是指每秒画面重绘的次数。FPS越大,则动画效果越平滑,当FPS小于20时,

  • 本文向大家介绍jQuery实现分章节锚点“回到顶部”动画特效代码,包括了jQuery实现分章节锚点“回到顶部”动画特效代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jQuery实现分章节锚点“回到顶部”动画特效。分享给大家供大家参考,具体如下: 这里演示基于jquery实现的分章节动画实现“回到顶部”的效果,可通过 网页顶部的数字序号直接进入网页的章节,当处于第二章节的时候,网页右侧