Q&A——渲染优化
来源:互联网 发布:四边形对角线角度算法 编辑:程序博客网 时间:2024/06/06 03:41
渲染优化
Q1:在Android平台上,PlayerSettings里开启/关闭Multithreaded Rendering,在性能和稳定性上有多大的区别? 一般是勾还是不勾?
就我们目前深度优化过的项目而言,Android App中开启多线程渲染确实可以在渲染模块中带来较大的性能提升,但我们并没有详细地定量分析过,所以很难给出“到底能提升多少”的定量说明。对于稳定性来说,现在市面上已经有不少Unity 5.3版本的开启多线程渲染的项目在成功运营,就目前反馈的效果来看都是不错的。所以,对于使用Unity 5.3版本以后(包括Unity 5.3)的项目,我们一般建议尝试开启多线程渲染这一选项,至于能具体提升多少,可自行在项目中进行比较。
同时需要指明的是,并不是开启多线程渲染就一定会出现质的飞越,因为我们也看到一些项目(特别是使用了UGUI的项目)在开启多线程渲染后,其半透明耗时出现了非常不稳定的运行效果,如下图所示。因此,建议研发团队在开启多线程渲染后,多进行效率对比,密切关注多线程渲染带来的效率变化。关于多线程渲染性能,我们将在3月份举办的UWA Day 2017 大会上带来更为详细的性能分析,尽情期待!
渲染优化
Q2:物体的动态合批条件和是否是透明物体没什么关系吧?比如粒子系统的物体一般都是透明的,是不是也可以合批?
动态合批并不限制物体是否为半透明或不透明物体。合批的首要要求是Material一致,其本身是半透明Material还是不透明Material均没有限制。粒子系统同样是可以合批的,只要其材质一致,深度较为接近且中间没有其他材质的物体阻隔,那么Unity引擎将会将其进行合批。关于动态合批更为详细的要求,可以查看Unity引擎的官方文档:https://docs.unity3d.com/Manual/DrawCallBatching.html
渲染优化
Q3:在UWA报告的渲染模块中,网格数和Draw Call数量都不高,但为什么不透明渲染消耗这么高呢?我该如何进一步定位并优化这个问题呢?
研发团队可以在UWA报告中查看“Camera.Render”的具体性能堆栈(高CPU占用函数列表中),通过该堆栈即可看到该项目在渲染模块中详细的性能瓶颈。
如上图所示,我们可以看到不透明渲染中,场景模型渲染耗时占了13%,蒙皮网格渲染耗时占了8%。对此,我们需要对场景的静态模型和蒙皮网格进行进一步地完善。而对于静态模型来说,在Draw Call和Triangle都很正常的情况下,其CPU占用一般来说应该是较低的。但如果较高,则建议研发团队对模型中(特别是地形)渲染Shader的采样纹理数量进行进一步检测。比如,我们经常发现一些项目中地表模型使用了4~5层混合贴图来进行渲染(T4M地形等),这些在中低端机器上往往会造成不透明渲染较高的CPU开销。对于这种情况,建议尝试降低Shader所使用的采样纹理数量。当然,以上仅为我们遇到的较为普遍的情况,如果你的项目或性能报告中也存在一些难以解释的问题,欢迎随时来跟我们进行沟通。
- Q&A——渲染优化
- Q&A——UI Mesh 渲染
- Q&A——图形渲染(三)
- Q&A——图形渲染(一)
- Q&A——图形渲染(二)
- Q&A——骨骼优化
- Q&A——性能优化(二)
- Q&A——性能优化(三)
- Q&A——性能优化(一)
- Q&A——性能优化(二)
- Q&A——其他
- Q&A——物理
- Q&A——性能
- Q&A——UI
- Q&A——NGUI
- Q&A——物理性能
- Q&A——资源管理(六)
- Q&A——资源管理(七)
- Ceph RGW远程同步(multisite)机制研究
- android6.0获得运行时权限方法抽取
- LeetCode K sum问题总结
- 设置并使用树莓派进行Python和C语言编程 (下)
-  ; 都表示空格,但是使用有区别
- Q&A——渲染优化
- android adb命令
- 基于Hadoop 的分布式网络爬虫技术学习笔记
- easyui placeholder无效
- CentOS 修改源
- Jedis下的ShardedJedis(分布式)使用方法(二)
- Android之Context理解篇
- cookie真的只和浏览器有关么?
- 未找到导入的项目 .wpp.targets。请确认 <Import> 声明中的路径正确,且磁盘上存在该文件