当前位置: 首页 > news >正文

Shader 纹理动画和顶点动画

一、内置变量--时间

要实现动画,我们需要把时间添加到计算当中,让画面可以随着时间变化而变化。在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.lryc.cn/news/343748.html

相关文章:

  • 使用macof发起MAC地址泛洪攻击
  • 力扣:1979. 找出数组的最大公约数(Java)
  • 电瓶车充电桩:潜藏的暴利行业,简单入门到月入万元!
  • mac监听 linux服务器性能可视化(Grafana+Promethus+Node_exporter)
  • 【负载均衡在线OJ项目日记】运行功能开发
  • Qt | QLineEdit 类(行编辑器)
  • Mamba结构的Demo源码解读
  • 金仓面对面 | 人大金仓×安硕信息共话金融信用风险管理数字化转型之道
  • JavaScript值类型与引用类型的区别
  • 每日一博 - 闲聊架构设计中的多级缓存设计
  • 轻松实现MySQL集群配置:一主一从与一主多从教程
  • Leetcode刷题-(41~45)-Java
  • 【Android】源码解析Activity的结构分析
  • 小猪APP分发:重塑应用分发市场的创新力量
  • 区块链 | IPFS 工作原理入门
  • 减速机齿数速算
  • 2万字长文:海豚调度器(DolphinScheduler)面试题深入了解
  • 全双工音频对讲模块-支持空中升级、多级无线中继
  • Spring扩展点(二)Spring事务生命周期
  • foobar2000 for Mac:卓越音乐播放器
  • 【自动驾驶|毫米波雷达】初识毫米波雷达射频前端硬件
  • 实战BACnet/IP标准通信网关在楼宇自动化中的应用
  • 设计模式的原则与分类
  • 在ubuntu虚拟机中手动安装VMware Tools(VMware Workstation 17 player)
  • 十个数据安全最佳实践:保护数据的简单方法
  • 【leetcode】二分搜索题目总结
  • 六西格玛项目的核心要素:理论学习、实践应用与项目经验
  • 21-ESP32-S3实时时钟(RTC)
  • 17.接口自动化学习-日志
  • python直接发布到网站wordpress之二发布图片