Shader 纹理动画和顶点动画

ops/2024/11/13 9:42:07/

一、内置变量--时间

要实现动画,我们需要把时间添加到计算当中,让画面可以随着时间变化而变化。在Unity Shader提供了如下关于时间的内置变量以便于在shader中访问时间实现各种动态效果。

名称类型描述
_Timefloat4t是自该场景加载开始所经过的时间,4个分量的值分别是(t/20,t,2t,3t)
_SinTimefloat4t是时间的正弦值,4个分量分别是(t/8,t/4,t/2,t)
_CosTimet是时间的余弦值,4个分量分别是(t/8,t/4,t/2,t)
unity_DeltaTimedt是时间的增量,4个分量分别是(dt,1/dt,smoothDt,1/smoothDt)

二、纹理动画

纹理动画在游戏中应用十分广泛,尤其是在移动平台上,由于资源比较局限,我们一般都会用纹理动画来替代复杂的粒子系统去模拟各种动画效果。

1、序列帧动画

最常见的纹理动画。原理很简单,一次播放一系列关键帧图像,当播放速度达到一定时,看起来就是一个连续的动画。

优点:灵活性强,不需要任何物理计算就可以得到很细腻的动画效果。

缺点:需要制作大量不同的关键帧图像,美术工程量比较大。

2、滚动的背景

2D游戏中经常使用纹理动画去制作滚动的背景实现场景穿梭的效果。

三、顶点动画

在游戏中我们用顶点动画去模拟飘荡的旗帜、流淌的小溪流等。

顶点动画虽然非常灵活有效,但是有些注意事项:

如果我们在模型空间下进行了一些顶点动画,那么批处理往往就会破坏这种动画效果。这时,我们可以通过SubShader的DisableBatching标签来强制取消对该Unity Shader的批处理。然而,取消批处理会带来一定的性能下降,增加了Draw Call,因此我们应该尽量避免使用模型空间下的一些绝对位置和方向来进行计算。

为了避免显式使用模型空间的中心来作为锚点,我们可以利用顶点颜色来存储每个顶点到锚点的距离值,这种做法在商业游戏中很常见。


http://www.ppmy.cn/ops/40069.html

相关文章

微信小程序的Vant Weapp组件库(WeUI组件库)

一、定义: 是一套开源的微信小程序UI组件库。提供了一整套UI基础组件和业务组件,能够快速地搭配出一套风格统一的页面 二、使用: (1)(找到.eslintrc.js 右键,在内件终端打开)打开命…

docker-compose部署gitlab

需要提前安装docker和docker-compose环境 参考:部署docker-ce_安装部署docker-ce-CSDN博客 参考:docker-compose部署_docker compose部署本地tar-CSDN博客 创建gitlab的数据存放目录 mkdir /opt/gitlab && cd mkdir /opt/gitlab mkdir {conf…

49. UE5 RPG 使用Execution Calculations处理对目标造成的最终伤害

Execution Calculations是Unreal Engine中Gameplay Effects系统的一部分,用于在Gameplay Effect执行期间进行自定义的计算和逻辑操作。它允许开发者根据特定的游戏需求,灵活地处理和修改游戏中的属性(Attributes)。 功能强大且灵…

清醒脑科学,摆脱杂念/拧巴内耗

参考视频:【清醒脑科学】内耗/拧巴/杂念难止?你需要头脑的一键重启_哔哩哔哩_bilibili Part1:思维矛盾的真相 1. 信息量不足:就推测答案,因不定态导致的内耗 大脑觉得这个问题很重要,于是过度的紧张情绪&…

设计模式之传输对象模式

在编程江湖里,有一种模式,它如同数据的“特快专递”,穿梭于系统间,保证信息的快速准确送达,它就是——传输对象模式(Data Transfer Object, DTO)。这不仅仅是数据的搬运工,更是提升系…

[Easy] leetcode-225/232 栈和队列的相互实现

一、用栈实现队列 1、题目 仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 …

易图讯智慧公安警用三维电子沙盘系统

智慧公安警用三维电子沙盘系统是一个结合现代科技手段,为公安部门提供全面、高效、智能的警务管理解决方案的系统。该系统以“情报大数据、指挥扁平化、勤务可视化、情指勤一体化”为设计思想,整合了多台设备、有无线通讯、短信平台、天网、交通平台、治…

浅谈如何做好软件项目

如何做好软件项目,这是摆在软件实施团队每个人面前的关键问题。笔者在此提出一些浅见,供大家参考。欢迎在评论区交流! 目录 【摘要】 【正文】 一、树立正确的需求调研理念 二、谋定而后动的开发工作 三、大道至简的系统设计 四、专注项…