US3S9L1——如何制作动态效果

如何利用 Shader 制作动态效果

让画面动起来是因为每一帧对象的位置、角度、缩放、颜色等等信息的改变后重新渲染带来的
相当于就是间隔一定时间更新一些数据,从而带来了画面变化,
那么想要利用 Shader 制作出动态效果,其实原理也是一样的,我们只需要间隔一定时间改变Shader中的数据,
从而改变渲染的结果,最终达到画面变化的目的,这样就能够带来动态感了。

Shader 中的内置时间变量

利用 Shader 制作动态效果的关键就是 —— 利用时间变化来改变数据,从而导致渲染结果改变,带来画面变化
其中,时间是关键数据,Shader 中提供了对应的内置时间变量:

  1. float4 _Time

    4 个分量的值分别是 (t/20, t, 2t, 3t)​,其中t代表该游戏场景从加载开始缩经过的时间

  2. float4 _SinTime

    4 个分量的值分别是 (t/8, t/4, t/2, t)​,其中 t​ 代表 游戏运行的时间的正弦值

  3. float4 _CosTime

    4 个分量的值分别是 (t/8, t/4, t/2, t)​,其中 t​ 代表 游戏运行的时间的余弦值

  4. float4 unity_DeltaTime

    4 个分量的值分别是 (dt, 1/dt, smoothDt, 1/smoothDt)

    • dt​ 代表帧间隔时间(上一帧到当前帧间隔时间)
    • smoothDt​ 是平滑处理过的时间间隔,对帧间隔时间进行某种平滑算法处理后的结果

Shader 中经常会改变的数据

利用 Shader 制作动态效果的关键就是 —— 利用时间变化来改变数据,从而导致渲染结果改变,带来画面变化

我们已经知道,在 Shader 中如何获取时间变量,那么我们一般会利用时间和什么数据一起计算,来达到动态效果呢?

  1. 颜色

    通过时间控制颜色的变化,比如 渐变、闪烁 等效果

  2. 位置

    利用时间使顶点在某个方向上移动,比如 波动 等效果

  3. 纹理坐标

    利用时间变化来动态改变纹理坐标,比如 水流、云彩、序列帧动画 等效果

  4. 法线

    利用时间动态修改法线方向,比如 风吹草动 等效果

  5. 缩放

    利用时间改变物体缩放比例,比如 脉动、跳动等效果

  6. 透明度

    利用时间控制物体透明度,比如 淡入淡出、闪烁等效果