• 利用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了。

  • 相关阅读:
    java网络爬虫爬虫小栗子
    浮点数精确表示
    使用yum安装CDH Hadoop集群
    判断奇数,java陷阱
    Long型整数,缄默溢出
    java基础知识点
    java常用指令
    Codeforces Round #275 (Div. 2) D
    区间dp的感悟
    Codeforces Round #386 (Div. 2) C D E G
  • 原文地址:https://www.cnblogs.com/gwen-/p/13986888.html
Copyright © 2020-2023  润新知