Cocos ProMotion 可变(自适应)刷新率来袭!& 百倍渲染优化揭秘

灵感来源

一直看:apple:苹果公司宣传ta的ProMotion技术,可以实现1-120hz自适应刷新率,可以实现终极省电,当时脑中就有个模糊的想法,软件或者游戏引擎能不能主动减少刷新率,来实现类似效果

只是一直上班没有去行动,最近休息后,随着iPhone 17发布,ProMotion下放到基础款iPhone的新闻火热起来,我的灵感又再次迸发,于是看了看引擎源码, 花费些许时间,也实现了0-GameRate自适应刷新率

先看效果

pro-motion2

:arrow_up:可以看到界面变化时gpu刷新率自动增加;
静止时,GPU刷新率降至1,Cocos帧率保持60,渲染耗时却降至0.0x

pro-motion-spine

:arrow_up:spine动画停止时,界面恢复纯静态,渲染耗时自动降低

原理揭秘

以ccc2.x为例

首先我们得知道Cocos的界面何时完全静止;似乎Cocos没有一个属性告诉我们,翻翻源码可以发现cc.Node的renderFlag属性可以得知节点的大部分变化,这些变化大多会引起界面变化

那就好实现了,当任意Node的renderFlag发生变化,记录下一个值代表当前帧需要正常刷新率
然后在渲染时,如果是正常刷新率,则正常渲染, 否则不渲染

如果静态界面是渲染耗时特别高,那优化后就不是百倍优化了,是千倍,乃至无限倍

是不是很简单?没错,只需要一个灵感,就可以实现苹果引以为傲的ProMotion自适应刷新率

当然上述只是实现之前的思考,具体实现会面临很多问题,请静待下期深入揭秘


立刻了解实现

当然,具体实现已经上架Store : Cocos ProMotion
购买后赠送 Cocos Inspector / Assets Manager 二选一 全都送,详情查看上面Store链接之额外福利
赠送加上折扣,约等于不要钱,还等什么 :wink:

暂时只实现ccc2.x版本, 3.x后续支持 已初步支持h5 2d项目,无需重复购买

13赞

有意思,动态刷新

有意思,我一般纯ui且无触摸场景都主动限30。

不如限0 :slightly_smiling_face:

这个休息指的是什么?难道也是失业?

冲动裸辞了 :rofl:

兄弟你这是取死之道啊。我就算跑路也是找领导交涉拿了大礼包的。你这个裸辞是真的吊。不过我也能理解你,你裸辞之前的状态肯定是非常难受的。不过快活几个月后就会更难受了。

1赞

你说的很对 :rofl:

你哪儿找这么一些图啊

裸辞其实没啥的,把自由职业搞起来,挽回损失 :sweat_smile:

后悔了,其实上家挺好的 :laughing:

裸辞后只要不是无缝衔接下家都后悔,毕竟少干一天少赚一天的钱

可以的,我之前看2dx优化省电的帖子也想到了这个,但是简单看了下源码发现没有脏标记没有更新渲染数据就没管,以为cocos做了优化就没深入下去
楼主的可以:+1:t2:

现在游戏中纯的静态页面其实很少的,很多都会带上 粒子 固定动画 骨骼 等等。使用场景受限,不知道后续会不会有什么奇思妙想。

3赞

tao bao

考虑下 来 HungryStudio

1赞

裸辞一时爽,一直裸着就很惨了。

牛啊,有点像客户端图形界面按需重绘的设计

2dx就有人提出来了
https://www.cnblogs.com/clnchanpin/p/7198732.html

1赞