动态效果的原理
一、为什么能实现动态效果
游戏画面中之所以能产生动画效果 主要的原因是因为 游戏循环 机制 即游戏画面每隔一个固定时间(每一帧)就会重新渲染 游戏运行时,每一帧都会更新屏幕,这种更新频率通常称为 帧率(Frames Per Second,FPS) 比如 30 FPS、60 FPS 代表的就是 1秒钟更新30次,1秒钟更新60次 而之所以看起来画面是变化的,是因为我们在每一帧可能都会改变游戏中对象的位置、角度、缩放、颜色等等信息后重新渲染 一般情况下,只要帧率大于24FPS,人眼就认为一帧帧切换着的画面是流畅且连贯的了
二、如何利用Shader制作动态效果
只需要让在一定时间改变Shader中的数据,从而改变渲染的结果,最终就能达到画面变化的目的
三、Shader中的内置时间变量
- **float4 _Time** 四个分量分别是(t/20,t,2t,3t) 其中t 代表该游戏场景从加载开始经过的时间
- **float4 _SinTime** 四个分量分别是(t/8,t/4,t/2,t) 其中t 代表游戏运行时间的正弦值
- **float4 _CosTime** 四个分量分别是(t/8,t/4,t/2,t) 其中t 代表游戏运行时间的余弦值
- float4 unity_DeltaTime 四个分量分别是(dt,1/dt,smoothDt,1/smoothDt) dt代表时间间隔,即:上一帧到当前帧的时间间隔 smoothDt是处理平滑过的时间间隔,对帧间隔时间进行某种平滑算法后的结果
四、Shader中常改变的数据
- 颜色 通过时间控制颜色的变化。比如:渐变、闪烁、等效果
- 位置 利用时间顶点在某一个方向上移动。比如:波动、等效果
- 纹理坐标 利用时间变化动态修改纹理坐标。比如:水流、云、序列帧动画、等效果
- 法线 利用时间动态修改法线方向。比如:风吹草动、等效果
- 缩放 利用时间改变物体的缩放比例。比如:脉动、跳动、等效果
- 透明度 利用时间控制物体的透明度。比如:淡入淡出、闪烁、等效果