US3S9L1——如何制作动态效果
US3S9L1——如何制作动态效果
如何利用 Shader 制作动态效果
让画面动起来是因为每一帧对象的位置、角度、缩放、颜色等等信息的改变后重新渲染带来的
相当于就是间隔一定时间更新一些数据,从而带来了画面变化,
那么想要利用 Shader 制作出动态效果,其实原理也是一样的,我们只需要间隔一定时间改变Shader中的数据,
从而改变渲染的结果,最终达到画面变化的目的,这样就能够带来动态感了。
Shader 中的内置时间变量
利用 Shader 制作动态效果的关键就是 —— 利用时间变化来改变数据,从而导致渲染结果改变,带来画面变化
其中,时间是关键数据,Shader 中提供了对应的内置时间变量:
-
float4 _Time
4 个分量的值分别是
(t/20, t, 2t, 3t)
,其中t代表该游戏场景从加载开始缩经过的时间 -
float4 _SinTime
4 个分量的值分别是
(t/8, t/4, t/2, t)
,其中t
代表 游戏运行的时间的正弦值 -
float4 _CosTime
4 个分量的值分别是
(t/8, t/4, t/2, t)
,其中t
代表 游戏运行的时间的余弦值 -
float4 unity_DeltaTime
4 个分量的值分别是
(dt, 1/dt, smoothDt, 1/smoothDt)
-
dt
代表帧间隔时间(上一帧到当前帧间隔时间) smoothDt
是平滑处理过的时间间隔,对帧间隔时间进行某种平滑算法处理后的结果
-
Shader 中经常会改变的数据
利用 Shader 制作动态效果的关键就是 —— 利用时间变化来改变数据,从而导致渲染结果改变,带来画面变化
我们已经知道,在 Shader 中如何获取时间变量,那么我们一般会利用时间和什么数据一起计算,来达到动态效果呢?
-
颜色
通过时间控制颜色的变化,比如 渐变、闪烁 等效果
-
位置
利用时间使顶点在某个方向上移动,比如 波动 等效果
-
纹理坐标
利用时间变化来动态改变纹理坐标,比如 水流、云彩、序列帧动画 等效果
-
法线
利用时间动态修改法线方向,比如 风吹草动 等效果
-
缩放
利用时间改变物体缩放比例,比如 脉动、跳动等效果
-
透明度
利用时间控制物体透明度,比如 淡入淡出、闪烁等效果