UPL9-1——GPU Skinning
UPL9-1——GPU Skinning
GPU Skinning
GPU Skinning(GPU 蒙皮)是 Unity 中提供给我们的一个功能开关
可以在 Project Settings ——> Player ——> Other Settings ——> GPU Skinning 中进行设置
它的设置 决定了 角色动画(带 Skinned Mesh Renderer 蒙皮网格渲染器的对象)里顶点随骨骼运动的变形计算 在 GPU 还是 CPU 中进行

GPU Skinning 的三种模式
-
CPU
所有蒙皮运算都在 CPU 中完成,完成后,CPU 把最终的顶点位置传给 GPU
这种方式虽然兼容性好,但是 CPU 压力很大,大量角色存在时可能导致 CPU 成为瓶颈 -
GPU
CPU 只算部分内容,比如骨骼矩阵,顶点变形由 GPU 顶点着色器来做
这种方式可以大幅减少 CPU 运算和数据传输
GPU 会对每个模型单独计算蒙皮,如果 DrawCall 较高,会带来一定开销 -
GPU (Batched)
GPU Skinning 的批处理版本,Unity 会把多个 Skinned Mesh Renderer 的蒙皮运算 合并在一次 GPU Pass 里
这种方式极大减少 DrawCall 和 API 调用开销,更适合场景中有很多相同或相似角色(比如群怪、士兵大军)的情况
但是内存使用较高,并且部分低端设备可能不支持
我们应该如何选择
-
CPU:
当 模型顶点数 * 骨骼数 很大时,CPU 负担会很重
每帧要传输大量顶点数据到 GPU,对内存带宽消耗也大
因此仅适合动画使用较少的项目 -
GPU 和 GPU (Batched):
通过使用这种模式可以有效减少 CPU 负担
减少 CPU 到 GPU 的数据传输量,特别适合有 大量角色 或 高顶点数模型 的场景
如果目标设备性能中高,优先选 GPU (Batched)
如果目标是低端移动设备,角色数不多,GPU 更稳,兼容性更好
只有在 GPU 端顶点计算已经成为瓶颈时,才考虑回退到 CPU 或优化模型和骨骼(甚至不考虑回退,直接从优化 GPU 入手)
