如何读懂UWA性能报告?—渲染篇

简介:

先抛砖引例

我们以《六龙争霸》在三星 S3上的数据为例,打开渲染模块的界面,我们可以看到更详细的性能数据,如下图所示:
UWA Tech Doc
我们能在该模块中看到以下这几个参数:

1.DrawCall数量
每次引擎准备数据并通知GPU的过程称为一次Draw Call。在没有进行拼合的情况下,这一过程是逐个物体进行的,对于每个物体,不只GPU的渲染,引擎重新设置材质/Shader也是一项非常耗时的操作。因此每帧的Draw Call次数是一项非常重要的性能指标。目前,我们建议DrawCall的主体范围(5%~95%) 控制在[0,150]范围内。

降低Draw Call的方法则主要是减少所渲染物体的材质种类,并通过Draw Call Batching 来减少其数量。感兴趣的朋友可以查看我们之前的博文和Unity官方文档:优化CPU篇。

2.Triangle
这个不用多说了,面片数过高会影响渲染效率。这里需要说明的是,此处的面片数量并不是当前帧场景模型的面片数,而是当前帧所渲染的面片数,其数值不仅与模型面片数有关,也和渲染次数相关。例如:场景中的网格模型面片数为1万,而其负载的Shader拥有2个渲染Pass,或者有2个相机对其同时渲染,那么此处所显示的Triangle数值将为2万。

3.不透明和半透明渲染
不透明物体和半透明物体的渲染,几乎是所有项目最为耗时的部分。一般来说,在移动游戏项目中,半透明物体渲染开销均要大于不透明物体的渲染开销,即紫色曲线是要高于蓝色曲线的。对于半透明渲染的开销,大家需要主要关注三个地方:UI界面、粒子系统和半透明场景物体(花草、光束等)。而如果你的项目恰巧不透明渲染较高(常见是MMO游戏),那么你需要尝试简化场景中的不透明模型网格、动态加载超大地形了。

需要说明的是,以上几个参数的CPU耗时需要结合具体场景查看。我们可以点开分析&建议,看下主要范围(5%~95%)内的数值。

UWA Tech Doc

此外,UWA测评报告中将Draw Call、Triangle和蒙皮网格的数量趋势图排放在一起,从它们的数量分布趋势、再结合对应帧数的场景图,推测出影响性能开销的主要原因。
请输入图片描述

并且,选中某一帧后,我们能在UWA的报告中看到具体的截图,就很容易定位当时的场景了:
UWA Tech Doc


如何优化,请看“分析 & 建议”

UWA Tech Doc
由于每个项目的情况各不相同,这里简单总结几点,对于渲染模块的优化,通常我们建议开发团队从以下几点入手:

1、简化场景和模型的相关资源
可以尝试使用Asset Store中的SimpleLOD、Simplygon等简化工具来对网格模型进行简化,从而进一步加快渲染的效率,如果可以,建议蒙皮网格降低到1500面以下,场景渲染面片峰值低于10万面。

另外,在大量的移动游戏中,其渲染资源其实是“过量”的,过量的网格资源、不合规的纹理资源等。所以,在UWA测评报告中对资源的使用进行了详细的展示(网格资源的顶点属性、纹理资源的分辨率等具体使用情况),也能帮助大家快速查找和完善存在问题的资源。
UWA Tech Doc

2、粒子系统
粒子系统是目前大量项目中半透明渲染耗时较高的“罪魁祸首”。如果咱们的项目半透明渲染较高,一定要重点查看粒子系统的渲染开销。一般来说,我们建议将粒子系统的渲染开销主体范围(5%~95%)控制在0~3ms范围内。该模块在UWA性能报告中另设有专门板块,我们将在以后的专题中讲解。同时,在Unity 5.3版本以后,引擎将这部分开销放到了子线程进行处理,这一做法很酷!

3、根据某些高耗时的函数来优化
某些大量渲染的函数,如查看Camera.Render等 。这些函数可以在代码效率中查看,并通过堆栈信息查阅到具体的调用情况。
UWA Tech Doc

4、根据手机机型的不同采用不同的渲染LOD
比如低端机(红米2)上使用更为简单的材质,从而来降低低端设备的GPU压力。

好了,渲染模块报告的参数说明先到这里啦,希望简单易懂。不过呢,渲染模块由于是重中之重,如果平日里大家有什么相关的疑惑或者QA,我会陆续补充在这里的,也谢谢大家的真知灼见咯!





原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
前端开发 JavaScript UED
前端性能的性能指标之首次内容绘制(FCP)
首次内容绘制(First Content Paint)是前端性能的一个重要指标,因为它是用户体验的一部分,并且对于网页的响应速度和可接受性有很大的影响。
397 0
|
数据采集 缓存 数据可视化
Echarts高级进阶教程:图表渲染大数据量导致卡顿加载时间慢等问题的解决方案
Echarts高级进阶教程:图表渲染大数据量导致卡顿加载时间慢等问题的解决方案
1892 0
|
前端开发 JavaScript UED
前端工程化的前端性能的性能指标之首次绘制(FP)
首次绘制(First Paint)是前端性能的一个重要指标,因为它是用户体验的一部分,并且对于网页的响应速度和可接受性有很大的影响。
145 0
内存清理、动画制作、CPU检测等五款实用软件推荐
人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。
312 0
内存清理、动画制作、CPU检测等五款实用软件推荐
|
XML 存储 Android开发
【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )
【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )
467 0
【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 )
|
Web App开发 存储 缓存
前端性能和加载体验优化实践(附:PWA、离线包、内存优化、预渲染)
页面为何会卡?等待时间长?看起来卡?特别是对于首屏资源加载中的白屏时间,用户等待的时间就越长,用户感知到页面的速度就越慢。麻省理工学院的 Richard Larson 在讲话中指出,“人类将被动等待高估了 36%”。这意味着用户感觉到的等待时间比开发工具记录的长得多。
815 0
|
编解码 前端开发 Android开发
Sketch 资源大搜集 (增补版)
Sketch 是一款适用于设计师的矢量绘图应用,同时也可以用它来搭建网站页面的原型。
332 0
Sketch 资源大搜集 (增补版)
|
JavaScript 前端开发 索引
小程序 多图列表 性能优化
小程序 多图列表 性能优化 写这篇文章的缘由: 最近在公司的小程序项目中遇到了页面图片元素过多导致的性能问题. 从小程序提供的性能检测面板分析, 确定是图片元素占用了过多内存导致. 因为本人之前主要是做桌面端应用开发和原生app开发, 没有太顾及过移动端图片的内存占用问题.
1821 0
|
JavaScript 容器 前端开发
一些JS事件小片段代码整理收集(持续)
一、js实现 1 2 3 4 5 function AcceptData(num){ 6 document.getElementById("accepDate").value+=num; 7 } 8 9 10 11 12 13 14 15 16  二、input输入框的value传值显示 input输入框中用户输入的值,点击按钮显示在另一个容器之中。
1051 0