澳大利亚称计划承认巴勒斯坦国 新西兰也在作此考虑最新报道
冀东水泥拟变更公司名称及证券简称为“金隅冀东”
龙头券商发力?东方财富涨超3%,“牛市旗手”券商ETF(512000)明显放量,国盛金控触及涨停实垂了
港股建材水泥股拉升 西部水泥录得7连涨 水泥行业盈利水平有望持续修复后续来了
中金:首予康耐特光学跑赢行业评级 目标价54港元官方已经证实
永顺煤矿网络竞价销售公告官方通报
永顺煤矿网络竞价销售公告官方已经证实
永顺煤矿网络竞价销售公告官方通报来了
宁德时代旗下锂矿停产 碳酸锂期货、锂矿股“大爆发”
大摩:调整部分内地消费品股目标价 H&H国际控股有较高重评可能性
汇量科技早盘涨逾11% 机构看好程序化广告仍保持较高增长
5年前在上海的一次“大胆”出手,融创为自己留下一线生机实测是真的
大摩:调整部分内地消费品股目标价 H&H国际控股有较高重评可能性
紫光股份港股上市收到证监会反馈意见:控股股东西藏紫光通信的100%股权被质押,是否会导致重大权属纠纷
金融时报:英伟达和AMD上缴15%的龙国AI芯片收入,换取特朗普“放行”
最新进展
AI安全受关注!《龙国AI安全承诺框架》发布,大数据产业ETF(516700)盘中涨超1.6%,资金逐步进场布局!这么做真的好么?
招银国际:降和黄医药目标价至31.39港元 维持“买入”评级是真的吗?
东海研究 | 晨会纪要20250811实垂了
东海研究 | 晨会纪要20250811官方已经证实
AI安全受关注!《龙国AI安全承诺框架》发布,大数据产业ETF(516700)盘中涨超1.6%,资金逐步进场布局!科技水平又一个里程碑
原木期货首个合约完成交割圆满收官后续反转
通用设备行业财务总监CFO观察:宝鼎科技丛守延违规收到2次警示函 2024年薪酬为50万元学习了
通用设备行业财务总监CFO观察:迈拓股份韩旭为硕士学历 薪酬仅17万元为行业内倒数第二太强大了
本轮成品油零售限价调整或搁浅 年内已六涨六跌三搁浅
星动纪元陈建宇:通用机器人是AI应用的下一个趋势,未来必将给生产力带来革新
总投资550亿元!全球首条搭载无FMM技术的第8.6代AMOLED生产线主厂房顺利封顶
通用设备行业财务总监CFO观察:恒锋工具郑继良中专学历为行业内学历最低 2024年薪酬为25万元
通用设备行业财务总监CFO观察:迈拓股份韩旭为硕士学历 薪酬仅17万元为行业内倒数第二
大唐电信监事会老大拟被罚200万,曾任职的高鸿股份涉嫌信披违法违规官方通报
金融壹账通加快车生态平台国际化布局,技术输出助力汽车金融服务智能升级
7月比亚迪销量为34.4万辆,市场份额达13.6%居新能源车企首位最新报道
通用设备行业财务总监CFO观察:致远新能周波年龄63岁为行业内最年长 2024年薪酬为61万元是真的?
锂矿重磅,“宁王”承认停产,融资资金抢筹股曝光又一个里程碑
利好突袭!一则停产消息彻底引爆!碳酸锂股期掀涨停潮!最新报道
反超OpenAI,百川宣布开源医疗大模型发布
利好突袭!一则停产消息彻底引爆!碳酸锂股期掀涨停潮!专家已经证实
百亿私募格局再生变!量化军团扩容,最新业绩出炉最新进展
专业服务行业财务总监CFO观察:安车检测李云彬违规收2次警示函 归母净利润下滑264% 薪酬75万元较前一年涨7%学习了
仙工智能港股IPO收证监会反馈意见:需说明技术出口、外资准入及股权激励等问题实垂了
蚂蚁集团否认与央行共建稀土人民币稳定币实测是真的
美联储重磅!降息概率89.4%?后续反转
反超OpenAI,百川宣布开源医疗大模型发布
闫瑞祥:美指短期关注上行 欧美日线支撑得失成关键后续会怎么发展
专业服务行业财务总监CFO观察:零点有数刘升违规收到1次警示函 2024年薪酬为79万元
高瓴创投布局卡牌市场 “闪魂”完成数亿元首轮融资官方已经证实
降息变政绩?工党染指英国央行独立性,英镑恐步美元后尘
与龙国人民银行、龙国稀土集团共建全球首个稀土人民币稳定币?蚂蚁集团辟谣官方已经证实
一、问题
Unity引擎里对渲染后期处理效果很多,如Bloom、运动模糊、景深等效果。实现过程是在作用的摄像机上加脚本并实现OnRenderImage方法,Graphics.Blit(source, destination, material);使用材质material的shader处理帧缓存的数据,再拷贝回屏幕帧缓存。
使用ImageEffect之后,发现在某些机型上(华为mate7、三星N7100),运行效率极低,明显卡顿。UnityProfiler查看真机渲染情况

二、调查分析
Unity文档并没有相关的详细介绍,实现的细节也不得而知。论坛里Camera.AAResolve解释为与抗锯齿有关系,关闭全屏抗锯齿之后测试,确实不会卡顿了。

目前主流移动GPU由三家公司生产,英国Imagination公司的SGX系列,美国高通公司的Adreno系列,以及著名显卡芯片商美国NVIDIA公司的移动GeForce系列。Arm的mali作为非主流,但在市场上有不小的份额,华为Mate7、三星N7100的GPU正是mali系列。
使用Mali Graphics Debugger查看渲染如图:

在前2个drawcall里都调用了glReadPixels接口

在glReadPixels的最后个参数不为空,则表示数据从显存传输到系统内存,从CPU到GPU的逆向传输,这是非常缓慢的过程,并且是阻塞模式。
看看其它机型渲染情况,下面是高通的gpu,使用adrenoprofiler查看。

它并没有调用glReadPixels,而是使用了glBindFramebuffer。FBO(Frame buffer object)在使用前需要绑定,voidglBindFramebuffer(GLenumtarget,GLuintid);第一个参数是指定绑定操作,读、写或可读可写。第二个参数指定绑定的对象,如果是0,则是默认的帧缓存对象。
这是使用了改变渲染目标缓存的方法。
由此可知不同硬件上处理的方式不一样,具体是因为Unity内部实现的原因或是硬件支持不够。查看opengl版本的版本历史和发展

最大变化的版本是OPENGL3.0。其中正式把帧缓冲对象(framebufferobject)划入core profile;帧缓冲对象之间可以互相拷贝像素到持有的不同的render target,是性能上的提升。
在FBO中使用多重采样抗锯齿,在3.0版本才加入的特性,若渲染接口不支持,则用了比较低级的API来完成获取屏幕缓存数据,导致了卡顿。
我们项目使用的是OPENGL2.0,而mali系列并没有很好的支持OPENGL2.0的接口。
用OPENGL3.0导出apk运行在华为mate7(mali系列)上,是没问题的。


同样使用了改变渲染目标缓存的方法,因为3.0版本的FBO支持多采样。
三、问题结论
OPENGL2.0,ImageEffect屏幕后期处理时,改变渲染目标缓存,绑定FBO,若不在ProjectSettings里设置全屏抗锯齿是没问题的。若设置了全屏抗锯齿,不同硬件对不同版本OPENGL的支持不定。
四、解决方案
1、关闭抗锯齿。
2、提升OPENGL版本到3.0。
3、不使用unity的OnRenderImage方法,直接使用渲染到纹理的方法。
第一种方案效果有损失,不可取;第二种可行,但版本的提升可能会有些不可预估的问题,3.0版本也弃用了很多的特性;第三种最可行,渲染到纹理的方法在绝多数机型都支持。实现方法如下:
1、摄像机上挂接一个脚本
2、Start方法,temp =RenderTexture.GetTemporary获取渲染纹理
3、Update方法,设置Camera.targetTexture= temp;
4、OnPostRender方法,设置Camera.targetTexture=null;Graphics.Blit(temp, null, material);
运行结果:


