图形开销在哪里?
游戏的图形显示部分主要消耗计算器的两个系统:GPU和CPU。任何优化的第一规则都是查明性能瓶颈在哪里,因为优化GPU和优化CPU的策略常常是不同的(甚至常常是相互对立的——常常为了优化CPU而把它的一些工作交给GPU,反之亦然)。
典型的瓶颈和检查方法:
1、GPU常常受限于填充率和存储器带宽。
2、如果游戏在较低的显示分辨率上运行更快,则很可能是受限于GPU的填充率。
3、CPU常常受限于需要渲染的物品数量,我们通常叫它“draw calls”(绘制调用,一般用专业术语“draw call”)
4、在Rendering Statistics窗口查看“draw calls”,如果在PC上它常常多达几千个,在移动设备上多达几百个,那你可能需要优化物体的数量。当然这只是根据经验的主要开销点,而瓶颈也可能在别处。
5、GPU和CPU在渲染方面都没有问题!比如,你的脚本或者物理可能是真正的问题所在,使用Unity的Profiler查明问题。
6、GPU处理太多的顶点。到底多少个顶点是ok的,依赖于具体的GPU设备和顶点着色器的复杂度。典型的数字是,在移动设备上“不要超过10万个”,在PC上“不要超过数百万个”。
7、CPU处理太多的顶点 —— 针对CPU处理顶点的情况,这可能是蒙皮网格、衣服模拟、粒子等。
为了让CPU做更少的工作,减少可见对象的数量是很有效的:
1、合并接近的物体。可以手工合并,也可以利用Unity的draw call batching(批量draw call)。
2、在物体中使用更少的材质。可以把独立的纹理合并成一个更大的纹理图集。
3、避免使用导致物体被渲染多次的效果(比如反射、阴影、像素光照等,见下面)。
合并物体使每个网格有至少几百个三角形,并且整个网格只使用一种材质。合并两个不共用同一材质的物体并不会提升性能,理解这一点很重要。拥有多个材质的最常见原因是两个网格不共用相同的纹理,所以为了优化CPU性能,你要确保合并的物体共用相同的纹理。
机会已经来了,你是不是下一个抓住它的人。蓝鸥广州VR/AR开发培训,打造专业VR/AR开发人才。
蓝鸥是中国移动互联网培训行业的领军品牌,更是苹果公司AATC与Unity两大官方授权培训中心。蓝鸥凭借多年多语言开发经验和企业项目经验,全面整合了VR/AR主流技术,讲解各类VR设备基于Unity开发过程,以及主流AR UnitySDK使用,更配有Oculus眼镜、LeapMotion、Kinect、 暴风墨镜、 Xbox One游戏手柄等专业VR/AR设备,让学员能够真实体验VR/AR场景,并融入到学习中,实现VR/AR真实效果。
更为重要的是,蓝鸥课程采用项目驱动教学,学员可以自己开发项目,并参与真实的企业项目开发,让学员能够灵活运用所学知识,积累项目经验,熟悉企业项目开发流程,培养系统的编程思维。让学员毕业后,就能胜任企业项目,熟练掌握各部门沟通技巧,成为企业急需的VR/AR开发人才。
不仅如此,蓝鸥已与5000多家企业达成合作,累计为BAT、新浪、去哪儿等企业输送了11000多名高级开发工程师。其毕业学员也多就职于一线城市,就业薪资普遍高于同行业,成为让人羡慕的对象。