利用GPU实现大规模角色动画渲染

**   为什么要通过GPU 动画代替骨骼动画

一:CPU处理动画问题分析

  * 游戏对象有动画会涉及到cpu的蒙皮开销

  *如果要渲染的动画角色数量很大时主要会有以下两个巨大的开销:

   1:CPU在处理动画时的开销。

   2:每个角色一个Draw Call造成的开销。

  * 骨骼动画主要处理都集中在CPU端,

  *CPU与GPU之间通讯的DrawCall问题 使用批处理(Static Batching和Dynamic Batching)或者GPU Instancing 可以解决这一问题 但是这两种技术都不支持动画角色的SkinnedMeshRender。

   使用Animator来管理角色的动画,角色必须使用SkinnedMeshRender来进行渲染。

二 :GPU 处理动画分析

  1:可以将SkinnedMeshRender换成普通的Mesh Render  利用GPU Instancing来减少Draw Call了

*GPU Instancing 分析:

  1:GPU Instancing最大的优势是可以减少内存使用和CPU开销,使用GPU Instancing时 不需要打开批处理, GPU Instancing的目的是一个网格可以与一系列附加参数一起被推送到GPU,要利用GPU Instancing必须使用相同的材质,并传递额外的参数到着色器,如颜色,浮点数等。

  2:GPU Instancing是不支持SkinnedMeshRender的,也就是正常情况下我们带动画的角色是无法使用GPU Instancing来减少Draw Call的,所以我们必须先完成上一小节的目标,将动画逻辑从CPU转移到GPU后就可以只使用Mesh Render而放弃SkinnedMeshRender了。

原文地址:https://www.cnblogs.com/gwen-/p/13986888.html