[Unity] GPU动画实现(一)——介绍

这篇具有很好参考价值的文章主要介绍了[Unity] GPU动画实现(一)——介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当谈到戴森球计划的时候,我师兄说里面的动画都是一个叫GPU动画的东西来实现的,几乎一切图形功能名字扯到GPU的时候,通常都是高性能的体现,让我不禁好奇GPU动画是什么东西。

定义

首先什么是GPU动画,GPU动画是将动画的顶点信息记录下来,通过Shader在顶点着色器阶段重新设置顶点的位置,从而渲染出动画。因此GPU动画是典型的空间换时间的方案。

[Unity] GPU动画实现(一)——介绍

实现步骤

本系列主要目标是实现GPU动画,围绕这个目标要做的几个步骤

1.网格合并

2.材质合并

3.生成动画数据

4.渲染GPU动画

特点

使用GPU动画最大的优点就是可以进行合批,减少batch。然而使用GPU动画有以下几个限制

1.模型顶点数不宜过多

因为GPU动画是一种将顶点信息记录下来的空间换时间的方案,因此顶点数量和空间大小关系紧密,顶点越多空间占用越多。经验论下,模型的顶点不宜超过16000,即2^14,不过这也不是绝对的,如果动画帧数较少的话,可无视该条件。

2.动画时间不宜过长

简单来说,和上一个原因一样。如果顶点数较少,可无视该条件。

这里可以提供一个粗略的计算公式:顶点数 * 动画时间对应的帧数 = 空间大小

3.切换动画的复杂情况

每个texture对应一个动画,意味着我们需要切换动画的时候我们必须重新设置texture,这可能会使情况变得复杂,无法记录的动画播放状态,合批导致针对单一对象进行修改texture导致的性能退化。

4.材质合并后的空间大小

材质合并会将多张材质合成一张,因此一个可预见的问题是生成的材质过大,原本多批次的渲染变成单次渲染后,反而因为材质过大导致效率降低。经验论来说我们总是希望贴图尽可能的小,或者将重复用到的贴图从合并后的贴图中剔除出去。文章来源地址https://www.toymoban.com/news/detail-492445.html

到了这里,关于[Unity] GPU动画实现(一)——介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity】Unity使用动画实现场景转换

    哈喽,大家好,我是FEZ98. 由于今天需要实现一个小项目中的场景转换效果,于是使用了Animator简单的实现了这个需求,同时也与大家分享一下今日的收获,如果哪里有错误,还望朋友们指正。 使用动画实现简单的场景转换的思路是向场景中添加一个专门处理转换效果的 Imag

    2024年02月03日
    浏览(46)
  • Unity实现GPU Cull渲染

    开放世界游戏中植被和物件的数量往往是巨大,  而传统组织大量植被渲染的方式是利用QuadTree/Octree/Kd-Tree等数据结构对植被Intance数据进行预先生成一个个Cluster,然后在运行时进行FrustumCull,收集可视的所有Cluster,最后进行DrawInstance. 这种方式往往存在两个缺点:  [1]Cluster粒度和

    2024年02月07日
    浏览(36)
  • unity实现数字滚动动画效果

    要在 Unity 中实现数字滚动动画效果,你可以使用以下步骤: 创建一个新的 Unity 项目。 在场景中添加一个 UI 文本控件。 在 C# 脚本中,使用 coroutine 实现动画效果。 在每一帧中更新 UI 文本的数字,并通过计算得出下一个数字的位置。 在动画结束后,使用 StopCoroutine 停止动画

    2024年02月10日
    浏览(49)
  • Unity Dotween插件的运动曲线(Ease)介绍Ease选项Ease效果示例以及C#修改动画曲线功能

    我们在制作动画时经常使用这个Dotween插件,在移动、旋转、透明度等等参数的控制都可以使用该插件,而且在这个插件上的控制动画可以设置曲线,内置的曲线有这些: 以InOutSine的曲线进行往右移动: 效果是这样的: 能看出开始是从0提速,最后是慢慢减速至0的效果。 4个

    2024年02月01日
    浏览(82)
  • Unity 使用Shader实现序列帧动画

    序列帧动画图片使用shader逐帧播放 可以直接使用,拿走不谢。 可以挂到材质上放入Image组件的材质中使用。

    2024年02月13日
    浏览(45)
  • Unity开发日记【第三天】——角色动画效果的实现

    目录 一、站立和跑步动画效果 二、跳跃动画 三、对移动过程中的一些优化和修正 本部分我们尝试给我们的角色添加各种动画效果 首先给角色添加组件Animator,我们可以看见该组件要求一个控制器。 接下来在根目录下新建一个文件夹Animation用来存放所有的动画效果,在文件

    2024年02月05日
    浏览(55)
  • 【Unity】渐入渐出的黑屏(白屏)过场动画最简单的实现

    一个简单的黑屏动画,用于2D项目,效果类似慢眨眼、进/出房间时切换场景的衔接过渡。 这种效果的实现方式其实蛮多的,我能想到的包括用shader,用一张全黑Sprite覆盖屏幕,或者直接做成一个UI。 (最近学了一些UnityShader,所以首先想到的方式是用画面“后处理”的方式写

    2024年02月08日
    浏览(45)
  • 【unity小技巧】实现没有动画的FPS武器摇摆和摆动效果

    添加程序摇摆和摆动是为任何FPS游戏添加一些细节的非常简单的方法。但是并不是所以的模型动画都会配有武器摆动动画效果,在本文中,将实现如何使用一些简单的代码实现武器摇摆和摆动效果,这比设置动画来尝试实现类似效果要容易得多 新增SwayNBobScript代码 代码挂载在

    2024年01月18日
    浏览(43)
  • unity3d 制作开门动画以及收集钥匙实现开门

    首先展示效果: unity3d 制作开门动画以及收集钥匙实现开门 第一步,我们在Hirarchy面板上新建三个cube,再按照一定的比例调整,制作完成一个门框,然后制作一个空物体并命名为Doorframe,将三个cube合并成门框一个整体:  然后再创建一个cube调整大小,在将合适的门移动至门框

    2023年04月13日
    浏览(55)
  • android,Compose,消息列表和动画(点击item的时候,就会删除)

    Compose,消息列表和动画(点击item的时候,就会删除) 案例二:

    2024年02月13日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包