原文链接:https://blog.csdn.net/Mq110m/article/details/130435557
Unity中的渲染优化
移动平台的特点
PC平台相比,移动平台上的GPU架构有很大的不同。由于处理资源等条件的限制,移动设备上的GPU架构专注于尽可能使用更小的带宽和功能,也由此带来了许多和PC平台完全不同的现象。例如,为了尽可能移除那些隐藏的表面,减少overdraw(即一个像素被绘制多次), PowerVR芯片(通常用于iOS设备和某些Android设备)使用了基于瓦片的延迟渲染(Tiled-based Deferred Rendering, TBDR)架构,把所有的渲染图像装入一个个瓦片(tile)中,再由硬件找到可见的片元,而只有这些可见片元才会执行片元着色器。另一些基于瓦片的GPU架构,如Adreno(高通的芯片)和Mali(ARM的芯片)则会使用Early-Z或相似的技术进行一个低精度的的深度检测,来剔除那些不需要渲染的片元。还有一些GPU,如Tegra(英伟达的芯片),则使用了传统的架构设计,因此在这些设备上,overdraw更可能造成性能的瓶颈。
影响性能的因素
首先,在学习如何优化之前,我们得了解影响游戏性能的因素有哪些,才能对症下药。对于一个游戏来说,它主要需要使用两种计算资源:CPU和GPU。它们会互相合作,来让我们的游戏可以在预期的帧率和分辨率下工作。其中,CPU主要负责保证帧率,GPU主要负责分辨率相关的一些处理。据此,我们可以把造成游戏性能瓶颈的主要原因分成以下几个方面。
(1)CPU
过多的draw call。
复杂的脚本或者物理模拟。
(2)GPU。
顶点处理
➢ 过多的顶点
➢ 过多的逐顶点计算。
片元处理
➢ 过多的片元处理(既可能是由于分辨率造成的,也可能是由于overdraw造成的)。
➢ 过多的逐片元计算
(3)带宽
使用了尺寸很大且未压缩的纹理。
·分辨率过高的帧缓存。
(1)CPU优化。
·使用批处理技术减少draw call数目。
(2)GPU优化。
1 减少需要处理的顶点数目。
➢ 优化几何体。
➢ 使用模型的LOD(Level of Detail)技术。
➢ 使用遮挡剔除(Occlusion Culling)技术。
2 减少需要处理的片元数目
➢ 控制绘制顺序。
➢ 警惕透明物体。
➢ 减少实时光照。
3 减少计算复杂度。
➢ 使用Shader的LOD(Level of Detail)技术。
➢ 代码方面的优化。
(3)节省内存带宽。·
减少纹理大小。
·利用分辨率缩放
Unity中的渲染分析工具
打开性能分析器
显示各种CPU和GPU运行过程重的状态数据
帧调试面板
查看draw call信息和相关shader的占用情况