** 为什么要通过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了。