默认画质的机型适配方案

默认画质的机型适配方案

1)默认画质的机型适配方案
2)Unity TempBuffer的出处如何查看
3)Active和Deactive耗时高的物体优化方式
4)自定义Shader在场景烘焙光照贴图后材质变黑

这是第188篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)


LOD

Q:我们现在的方案是按照CPU性能分档来做的,不过机器性能分档还和GPU/分辨率等相关,我们的分档和UWA提交测试时的机器分档就不一样。请教下大家是怎么做的?

A:个人认为没有必要死板的遵循某一准则,比如某些公司的标准中以高通的SoC型号的数字来分档,大于某个数字的就算第一档,但其实近两年新出的一些中端芯片综合性能已经明显高于几年前的旗舰芯片。

所以我们团队在做这个功能时,主要遵循的规则是:在满足研发/发行的强制要求的前提下,结合项目类型及性能瓶颈点,为每一个设备在帧数达标的前提下选取其能接受的最高画质。

以下举两个例子说明:

例如一些较老的使用高通810的机器,这一代芯片发热较严重,虽然在一些公司的标准中属于一档机,但由于经常会降频,所以我们只会将其设置成中等画质。

例如OPPO R9等一些较老的联发科的芯片,在实际测试中性能表现很糟糕,所以相比同年发布的同级别高通芯片,会特意将其降低一档。

在我们项目中实际分级时,分为5档。前面说了要尽量细致地照顾到所有机器,所以我们维护了一张表格,根据不同机器的参数将其映射到5档里面。

iOS设备,主要根据其Device Model来划分,iOS由于设备量很少,基本通过其型号就能预估出大概的性能范围,具体的DeviceModel信息网上资料很多,可以参考:https://stackoverflow.com/questions/26028918/how-to-determine-the-current-iphone-device-model

Android设备主要根据其GPU型号来划分,我们主要参考:https://www.techcenturion.com/mobile-gpu-rankings

根据这个帖子中给出的评分初步整理,然后结合实际测试运行下来的情况进行微调。

另外分级中的每档的具体设置,需要具体项目具体分析,基本上主要的设置无非就是分辨率、屏幕后处理、材质精度、阴影设置、LOD设置等等。

感谢范君@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5df34c3fce53cf56002cad31


RenderTexture

Q:请问这些TempBuffer的出处从哪里可以查看呢?

A:我们是在每次GetTemporary的时候,把返回的RenderTexture的名字改掉,这样在这里显示的就是改过的名字。重灾区还是在后处理上,bloom和depth of field要重点关注。

感谢王宇@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5dfb29e973f93355f9667f43


Active

Q:对于Active和Deactive耗时高的物体优化方式是移出摄像机范围吗?

A:首先可以在UWA的线上测评服务中测一下目前的Activate和Deactivate的具体数据。


如果您项目发现两项相差过大(如Activate次数是1W,Deactivate次数是1K),说明本身有很多操作是无用操作,可以通过报告下方的列表查看具体是对什么GameObject进行了Activate/Deactivate操作。

通过对比差异就可以判断哪些GameObject存在无用操作。

对于这类问题,建议在代码里用bool变量记录状态,不要直接用SetActive或activeSelf等API,其耗时影响会比较大。

对于确实需要频繁显示/隐藏的物体,尤其是UI组件(常见的如战斗内的UI血条),建议采用移出屏幕、修改Scale、修改透明度等方式替代SetActive操作。具体相关案例在我们之前的直播和案例精讲中都有提到。

该回答回由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e0083e873f93355f9667f58


Shader

Q:自定义的Shader在场景烘焙光照贴图后:

  • 如果我把Shader打包,那么场景加载后,材质是黑的。
  • 如果Shader不打包,那么场景加载后,正常。

我们也找了一些资料,讲Custom Shader烘焙光照的问题,看了下他们的处理方法,就是在指定下材质的Shader,但是很少有资料讲到这种情况的正式制作流程应该是怎样的,还有就是它的底层原理,不知道大家是否有相关的处理经验和材料呢?感谢!

A:可以按照下图中的参数设置一下Graphics Settings的Shader Stripping试一下效果。


这里会把Lightmap相关的Keyword剔除。

也可以只勾选项目实际用到的Lightmap模式,相应的Shader变体会少一点。

该回答回由UWA提供,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/5e008ce5ce53cf56002cad6b

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)