性能优化——GPU的影响
关闭MSAA
- 之前在查一个渲染问题,一开始是定位到了CPU在waitforFrame
- 所以知道是GPU的问题
- 但如何定义GPU的问题在哪里,就很麻烦。
- 我一开始以为是drawcall的问题,因为我发现drawcall有350个
- 但降低到30个后,依然情况没有好转。毕竟drawcall是优化cpu性能的
- 通过framedebugger也没办法定位问题。他只能知道绘制顺序,没办法定位每个效果的消耗时间
- GPU Usage也没用,他只能定位到大概的一个函数消耗时间
- 我当时就是定位到Canavas.DrawBatchs消耗时间最多。
逐步排查
- 因为这个项目是在其他项目的基础上改出来的
- 所以其他项目是30帧,这个项目是15帧,问题出在哪里,只需要找不同就行了。
- 两个项目唯一的不同就是渲染管线的不同。
- 然后已知场景是用摄像机渲染出来的,而摄像机和管线有关联的几个设置就那么几个
- 所以我依次把这几个效果关闭,打包,看帧率。
- 最后排除得到影响因素是MSAA
MSAA的影响
- MSAA 是抗锯齿,会大幅提高GPU的计算量,导致CPU一直在等待GPU计算完成