概述
本篇是Unity渲染性能优化官方文档中的渲染性能优化总纲,主要是让我们知道从哪些方面着手优化,都有哪些优化手段。
在优化之前要先定位出问题所在
在我们进行优化之前,要先分析出我们的应用的性能问题出在哪里。如果我们没有找出真正问题所在之前,就直接进行优化,很可能这部分优化工作是无效的,并且甚至可能会让问题更糟。而且,渲染性能问题可能是由CPU或者GPU引起的,对于不同原因引起的性能问题,处理方式也是不一样的,所以在我们进行优化之前一定要找出性能问题的真正原因。
减少CPU在渲染方面的消耗
一般情况下,对CPU渲染性能消耗影响最大的部分是发送渲染命令到GPU,渲染命令包括DrawCall(绘制几何图形的命令),和绘制几何图形之前的渲染状态设置的切换命令。如果是因为这个原因引起的性能问题,可以考虑下面几个操作:
1. 减少需要绘制的对象数量
a. 减少场景中的对象总数,比如,用天空盒来实现远景效果,这样子就可以减少远景对象
b. 执行更严苛的剔除,让Unity绘制更少的对象
i. 使用遮挡剔除来减少被物体遮挡的对象的绘制
https://docs.unity3d.com/Manual/OcclusionCulling.html
ii. 减小相机的远裁剪平面距离(far clip plane),这样可以让更多的远处的物体在相机的视野之外,从而不用绘制
iii. 还有一个更细的方法,就是把对象放到一个单独的层级,然后通过Camera.layerCullDistances设置不同层级的剔除距离
https://docs.unity3d.com/ScriptReference/Camera-layerCullDistances.html
2. 减少渲染每个对象的次数
a. 在合适的地方进行光影信息的烘培(预计算),用光照贴图代替实时光照。这会增加构建的时间、运行内存和存储内存,但是可以提高运行时的性能
b. 如果使用的是前向渲染(Forward rendering),要减少能照射到对象的逐像素实时灯光的数量。