Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

动态效果的原理

一、为什么能实现动态效果


游戏画面中之所以能产生动画效果
主要的原因是因为 游戏循环 机制
即游戏画面每隔一个固定时间(每一帧)就会重新渲染
游戏运行时,每一帧都会更新屏幕,这种更新频率通常称为 帧率(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中常改变的数据

  1. 颜色
    通过时间控制颜色的变化。比如:渐变、闪烁、等效果
  2. 位置
    利用时间顶点在某一个方向上移动。比如:波动、等效果
  3. 纹理坐标
    利用时间变化动态修改纹理坐标。比如:水流、云、序列帧动画、等效果
  4. 法线
    利用时间动态修改法线方向。比如:风吹草动、等效果
  5. 缩放
    利用时间改变物体的缩放比例。比如:脉动、跳动、等效果
  6. 透明度
    利用时间控制物体的透明度。比如:淡入淡出、闪烁、等效果

评论