Unity3D 优化深入浅出 3-带宽及 Physics(公众号笔记)
ABSTRACT
2018-01 公众号笔记,优化系列第三篇(较短)。讲总线带宽瓶颈——纹理合并过度反而降帧的原因,以及 Fixed Timestep、碰撞器、刚体、碰撞检测四个物理优化手段。
核心要点
- 一次 drawcall 除命令本身外,还要把顶点数据、纹理、shader 参数经总线拷贝到 GPU;OpenGL ES 下是拷贝而非指针传递,速度受限。
- 反直觉案例:UI 静态部分全部合并成一张大纹理后,drawcall 下降但帧率也下降、内存上升——合并纹理过大加剧带宽压力。
- 纹理合并原则:不会同时出现的元素不要打包在一起;单张合并纹理不大于 1024×1024(王者荣耀的限额是 256×256)。
- Mipmap 虽增加约 33% 内存,但因可按距离选用小图渲染,反而节省显存带宽。
- drawcall 优化目标:CPU 的绘制命令恰好被 GPU 消化,CPU 不等、GPU 不闲;仍不达标才削减场景做有损优化。
- 压缩纹理、减少图片细节可直接降低带宽压力。
- 物理优化四条:①Fixed Timestep 设 16ms~60ms 之间(过高耗 CPU,低于 15 帧易穿模);②谨慎使用 Mesh Collider;③刚体物理很耗,优先用自写数学模拟;④最小化 raycast/sphere check 次数,单次检测尽量多取信息。
关键实体与概念
总线带宽、纹理图集、Mipmap、Fixed Timestep、Mesh Collider、刚体(Rigidbody)、raycast、overdraw
关联概念
来源回溯
- 原始文件:
raw/ip/wechat_articles/Unity3D优化深入浅出3-带宽及Pysics.md(2018-01-11)
时效性评估
- 仍有效:带宽瓶颈原理、图集粒度权衡、Mipmap 的内存换带宽思路、Fixed Timestep 经验区间至今适用。
- 已过时:现代移动 GPU 与统一内存架构(Apple Silicon、新一代 Adreno/Mali)带宽大幅提升;Vulkan/Metal 下 CPU-GPU 数据传输机制已不同。物理部分 Unity 已有 DOTS Physics 等新方案,但 Fixed Timestep 的调参逻辑不变。