高通芯片GPU是否有类似于HSR功能

1)高通芯片GPU是否有类似于HSR的功能

2)UGUI上的RT动图会不会导致UI更新

3)UI经常迭代外观,如何尽量少改代码

4)开发过程中该使用AssetBundle包模式,还是模拟模式?


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

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

GPU

Q:高通芯片GPU是否有类似于HSR功能?望解答,谢谢。

A:参考如下:

测试案例1:小米9

点击按钮添加全屏不透明的Quad,使用Standard Shader,离相机越远,RenderQueue越小。

结果:从FPS上看,到100层,帧率也都是60帧。说明小米9上确实有类似于HSR的功能,就是不透明对象不需要手动调整渲染队列从而让靠近相机的先渲染。

测试案例2:小米5X

点击按钮添加全屏不透明的Quad,使用Standard Shader,离相机越远,RenderQueue越小。

结果:从FPS上看,1层的时候43帧,2层就掉到25帧,3层掉到17帧。说明小米5X上没有类似于HSR的功能。

测试案例3:小米5X

点击按钮添加全屏不透明的Quad,使用Standard Shader,离相机越远,不调整RenderQueue。

结果:从FPS上看,1层的时候43帧,5层的时候依旧43帧。不调整RenderQueue后,因为Unity的不透明是按照由近到远绘制的,由于Early-Z的关系,导致被遮挡的物体不会进行Fragment Shader计算了,所以帧率比较稳定。

总结:对于像地形这样的大面积且Shader复杂度通常比较高的对象,还是需要调整渲染队列到比较靠后的,因为对于低端机型,并没有HSR这样的功能。所以可以通过调整地形的渲染队列靠后,从而让Early-Z对于大地形生效,从而减少地形的渲染像素。

对于高端机型,如小米9,因为其GPU硬件支持HSR功能,所以对于不透明物体来说,渲染队列没有关系。

总体来说,还是建议调整大地形的渲染队列,对低端机型有好处。

感谢小苗子@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61b6e84cd8413e18eb47e0f4

UGUI

Q:在UGUI组件上使用RenderTexture动图会不会导致UI更新?

A:对于这个问题进行了简单的实验:实验设置了一个相机拍摄不停在运动两个物体,然后得到的RenderTexture赋给UGUI上的100个RawImage。在真机上运行,此时UI更新耗时几乎为0。

理论上,这些RawImage的顶点属性没有发生变化,确实不会导致UI更新。

感谢Faust@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61b6e8a0d8413e18eb47e1c4

UGUI

Q:问题:之前的项目是用Lua做UI开发的。一个ToLua,一个XLua。策划或美术经常要调已经做好的UI的外观,一般需要变布局或节点层级。最早,代码里访问某个节点都是用GameObject.Find找到节点,层级关系一变,就需要程序配合改,很麻烦。怎么做到调整UI,不用改代码呢?

思路:想到一个命名规范方案:程序拿到UI的Prefab绑上UI关联Lua的脚本后,把所有程序需要访问的节点,改名成rd_xxxxx,脚本控制下的子节点rd_开头的不能重复,如果有列表的子节点,上面再挂一个辅助的脚本(比如UItemHelper)。

Lua第一次加载时遍历所有节点,缓存所有rd_xxx的节点关系到脚本里(Lua里),这样,Lua代码里直接用self.rd_xxxxx就能得到对象,也不怕Prefab层级调整,也不用多次调用GameObject.Find。

规定其他人员调整UI Prefab时,不能改掉rd_xxxxx,如果需要改则要程序配合。

参考代码:ToLua项目的一个参考修改:

关联Lua脚本对象的LuaXXX.cs里(比如叫LuaMono.cs)初始化,增加:

UItemHelper.cs

其他:当然各个项目情况不一样,需要各自实现。不知大家项目里遇到类似问题,用的是什么方案?

比如有的方案不希望一开始初始化,可以在创建关联Lua时,设置元表,重写_index,当self.rd_XXX这样访问时,取到索引的前缀是rd_,则去判定缓存,没有则去找对应节点关联。

A1:基于路径的UI控件查找还是比较脆弱,直接使用Unity序列化引用更好,可以随意修改结构改名字不用担心丢失。

这里有一个不错的方案:UIControlBinding

感谢张迪@UWA问答社区提供了回答

A2:别用GameObject.Find方法,编辑器序列化直接绑定到Lua。和使用原生CS绑定一样。

感谢1 9 7 3-311135@UWA问答社区提供了回答

A3:把UI控件直接序列化到C#脚本上,运行时不要用Find和GetComponent,UI面板的Prefab实例化后,直接把这些对象塞到一个Lua Table里传给Lua。

感谢唐崇@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61af21abd8413e18eb3d51b1

Asset

Q:使用AssetBundle包,能够较大程度保证资源的正确性,但一点资源的修改就要打包,比较浪费时间,特别是美术、策划同学对它比较抵制;使用模拟模式,大概只是开发效率高一些,效果错误、循环引用等问题要延后到打包后才能发现(当然有很多其他方式可以提早发现,但属于附加手段)。

最近项目中发现,即使预加载了资源,Play过程中还是会出现非常严重的卡顿(1s+),这么长时间的卡帧导致表现效果直接不对了:比如,1s从起点移动到终点的过程,直接变成闪现到终点,成了Bug。

卡顿原因查下来是:AssetDatabase.Load出来的Prefab并不会将其依赖的Texture一起加载进内存,Prefab第一次渲染的时候Texture才会加载。我们这一个很复杂的(未优化)技能特效,用了40MB+的Texture,把UploadTexture卡了。

以这样一个特殊的问题为契机,准备重新考虑下要实行的方案,希望大家能多给些建议,可以是二者的对比选择,也可以是其他更好的做法或实现。

A:把Unity项目放在高速SSD中应该能缓解不少。

之前见到一个方案是在预加载时,创建一个玩家看不到的相机,把技能特效的Animator、ParticleSystem和音频组件等都执行一下,同时调用Camere.Render,强制把各类资源都WarmUp好,这样进入游戏后基本没有IO操作,应该能大大缓解题主描述的问题。

针对一些特效是被Timeline的轨道管理的,然后Timeline本身是一个独立模块的,可以根据技能配置找到特效(技能配置关联Timeline,Timeline关联特效),然后对特效预渲染就可以了,Timeline只是逻辑流程控制器。当然如果Timeline本身卡顿,还是要预执行一遍更好。

感谢张迪@UWA问答社区提供了回答,欢迎大家转至社区交流::

https://answer.uwa4d.com/question/61af045cd8413e18eb3d22c6

20211213

更多精彩问题等你回答~

Unity增量打包AssetBundle没变化的资源也会被重新打包

在模型有UV2的情况下开启Generate Lightmap UVs

如何实现AAB包的增量更新

封面图来源于网络

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

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859(原群已满员)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容