» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[数码手机] 以华为游戏“降画质”为引聊聊gpu预算和判断分辨率的数毛法

https://weibo.com/ttarticle/p/show?id=2309404426446708801545

华为手机续航特比其他家牛逼不是代价的,这还只是举了游戏的例子,其实降分辨率的不止游戏还有应用



​​首先希望无聊到嗝屁点进来的您,无论心里怎么想都单纯地先把华为这事当作一个“现象”,让我们按照
“(gpu预算)是什么”
“为什么(华为要降分辨率)”
“(华为降分辨率)怎么做”
三个方面来自由发散。


“是什么”
这里以gpu架构相同的麒麟980/990进行示例,由于华为全系都是60Hz屏幕就维持其游戏顶帧不变。

麒麟980的mali G76mp10@ 720MHz
gpu每秒可以执行的操作数为
numOp=10 x 720M cycles/sec = 7200 M cycles/sec
gpu每帧可执行的操作量是
numOp = (7200 M cycles/sec) / (60 frames/sec) = 120 M cycles/frame


麒麟990 4G版和5G版的GPU都一样均为mali G76mp16 @581MHz
gpu每秒可以执行的操作数为:
numOp=16 x 581M cycles/sec = 9296 M cycles/sec
gpu每帧可执行的操作量是:
numOp = (9296 M cycles/sec) / (60 frames/sec) ≈ 155 M cycles/frame
(很明显990的“预算”更加充裕,但这样横向对比并没有特别大的参考价值,不如直接看跑分,所以仅做示例不做对比。这里主要是针对同机型不同分辨率来说。)

再以我自己测试比较充分的麒麟980和平精英游戏为例,其默认分辨率为720p,帧数最高60fps,取多数全面屏的渲染分辨率720 x 1552 = 1117440 pixels。我们以此假设一个完美的理想模型,则每像素的gpu预算为:

numOp(fragCycleBudget) = (120 M cycles/frame) / (1.11744 M pixels) ≈ 107 cycles/frame/pixel.
而1080p渲染的吃鸡GPU预算缩减为71 cycles/frame/pixel.


“为什么”从上面的理论模型可以看出,渲染分辨率为1080P下980 GPU的预算相比720P下收紧了。这次mate30pro/mate30上被捉住降分辨率的崩坏3情况相似——理想模型下把渲染分辨率从1080p降到720p,每像素的gpu预算就从71涨到了107,资源调配上更加充裕。
(这也是除了“优化不到位”和“py不到位”,部分机型在不同游戏中默认最高画质/帧数限制的原因之一。通过上述公式也不难理解开发为什么对放出90/120 FPS不那么积极)

其实gpu预算是从游戏开发的角度看待硬件,那实际落实到用户角度上,游戏情况如何呢?


当我在还能皮角吃鸡1080p的时候对mate20pro/p30pro进行测试,980的在吃鸡渲染分辨率1080p结果就比较难看。
搭载990的mate30系列上降为的崩坏3同理——在这个up主手里缩三分之一的分辨率下990数吊打855+,而同1080p下就不好说了。


我们经常挂在嘴边的“降分辨率降低gpu压力”——其实这就是支撑这句话背后的理论逻辑中一个方面。


“怎么做”华为在一系列机型里强制降分辨率的设置,也就是这个“bug”的原理之前也发过,链接里原贴楼主、酷友、微博@未改初心、 讲得非常通俗易懂http://weibo.com/5908358617/IairlovD3
config文件应该是针对“智能分辨率”的名单,对分辨率的描述中r_min大多是降为0.6667,也就是720p


而compat文件中就限制比较死了,关于分辨率的描述基本也都是“resolutionratio=0.6667”,大部分情况其实是“锁”到720p渲染。switchable设置为true的app,代表分辨率环节可以通过关闭系统“智能分辨率”选项恢复,而switchable=false的就是“强制限制分辨率”了,即关闭智能分辨率也无效。

其对象并不局限于游戏,也有一些日常应用。曾经及现在华为各种机型上被“优化过”的app包括但不限于:
腾讯、百度、搜狗、高德地图


最主要的影响还是游戏,比如
CF


碧蓝航线


fatego


和平精英——你没有听错,华为锁死了720p,表现在皮角540p/480p等都能成功,但皮角1080p却无效。由于和平精英是默认720p渲染,所以并没有人深究这个问题。之前锁的是国服和国际服,所以我能在mate20pro/p30pro上皮角日韩服,但是现在我在mate20pro、p30pro上都试过日韩服,欧服,越南服都锁了


​以及这几天红红火火的崩坏3(之前只是华为服降分辨率,但官服不降;升级emui10后好像所有机型都会降,包括mate30系列、mate20pro、p30pro)

这里被压缩了,原图18m之前微博有,对比还是很明显



这次全民数毛也有点新发现:

手机上有物理分辨率(屏幕硬件),逻辑分辨率(在设置-显示-分辨率设置中可修改,adb命令可查,截图后查exif的分辨率也是系统逻辑分辨率),渲染分辨率(如上述游戏执行渲染的pixel数)三个概念。崩坏3国服现在版本有个我认为的“bug”(我确实不玩这个游戏所以没想通这个设置)——当识别逻辑分辨率为FHD+-1080p时,其默认“高画质”为1080p渲染,“中画质”以540p渲染;识别逻辑分辨率为HD+-720p时,其“高画质”和“中画质”却都以720p渲染。


这图没怎么压缩,三者也确实基本一样



通过私信​里朋友和我自己曾经的截图,发现当系统设置逻辑分辨率为FHD+-1080p时,“高画质”、“中画质”均为720p渲染;当设置系统逻辑分辨率为HD+-720p的时候,渲染分辨率不变。
所以华为强制锁分辨率的方式应该是在不影响默认设置的情况下,针对特定app设置不同逻辑分辨率。

从compat文件中可以看到,华为不仅针对分辨率resolutionratio,还有帧数framerate,纹理texturepercent,亮度brightnesspercent都能进行限制和调控。所以之前网上反馈的各种奇怪的模棱俩可的现象,如“游戏锁帧数跑不满”,“游戏分辨率没问题但画面感觉不清楚”,“关闭自动亮度后进某些app亮度还是会乱跳”...纷纷冤有头债有主——他的名字叫“省电精灵”,曾经在emui9中删除文件并禁用省电精灵可以完美解决...当然powergenne现在不仅改了名字,上述两个文件也都已经加密隐藏了。但其根据apk包名来执行的机制,理论上“多开分身”“谷歌空间”等方法可以绕过。

这个app名单并不是固定的,不同的机型,不同版本号都可能不同,所以你现在没降不代表以后不降(如mate20pro的崩坏3官服),你现在降了不代表以后不会恢复(如mate30pro的崩坏3官服)


“数毛”法正所谓魔高一尺,道高一丈,魔再高一尺...针对这种行为我们除了面对截图用人眼强行做图像识别,或者打嘴炮这种低效率形式,还是有简单的方法直接对渲染分辨率进行量化判断的。本来看到某些对着屏幕拍照后装数格子直接拿结论的有点烦不想发...不过@奥义天翔龙闪和@zhu3536都前后教过,这里就再复习一下,来源知名画面分析媒体Digital Foundry数毛社。
方法其实非常简单,游戏中进行截图(尽量关闭抗锯齿,柔化后不好数),在window画图(ps也行,这里以画图为例)中打开,找到一条笔直的斜线,以画图工具中的“选择”框定范围,如下图所示:


此时画图工具会给出​截图逻辑分辨率和图片大小,一般二者之间成正比,逻辑分辨率越高截图大小越大(不绝对,图片被压缩了后大小不同)


以及你所选定的范围的像素


​然后数锯齿个数,比如示例中我选取的范围有12个狗牙


狗牙个数与我选择的范围像素对应,即这张mate30在系统逻辑分辨率为HD+-720p时,崩坏3“中画质”下为点对点渲染,即渲染分辨率为720p。

同理,这张吧友让我测的sony xzp在逻辑分辨率4k模式下的崩坏3画质,截图本身被贴吧压缩过(贴吧压缩还好,感兴趣可以试试度娘云,狗牙都能压缩成蛀牙...),但此方法只要不压缩到狗牙都看不清的地步,依旧可以数出来是点对点渲染,渲染分辨率为2160p;其原图画质也确实非常惊人...相信玩起来也很惊人...


上述都是点对点渲染的示例图,再来一张mate30在系统分辨率FHD+-1080p下崩坏3官服的截图,狗牙为像素的三分之二,故为720p渲染


换个游戏,比如这张p30pro设置系统逻辑分辨率为FHD+-1080p下和平精英HDR高清,可以数出来狗牙基本是像素的三分之二,默认720p渲染无误。


选定范围越大,你数瞎眼的狗牙数越多,理论会越准确,但一般也不用严格限制数量。这个方法不能说是绝对无误,但是至今都经得起考验。全面屏时代屏幕物理分辨率数字变换越来越奇葩,个别情况下一两格小出入靠常识判断即可。


其它虽然华为有“降分辨率”的恶名,但部分游戏如nba 2k系列,狂野飙车系列等,都会根据不同机型(一般来说是识别gpu)匹配不同画质/分辨率/特效素材包,我就遇到过nba2k19在我的黑鲨初代上是1080p点对点渲染,在其它大多数机型甚至同SoC的黑鲨helo上却都是720p渲染的情况;狂9对各个机型默认配置的分辨率也会出现不同,但画质特效基本上是苹果>高通>玛丽。虽然部分纹理模糊啊画面不清晰啊之类的问题我们需要警惕敌人,但也得认真求证,不能把游戏画质问题都甩华为头上

华为对分辨率明显动刀并闪亮登上舞台中心确实是在初代gpu turbo时期,过度营销必然会把毛病戏剧性地放大,但一直都在说把GPU turbo恒等于降分辨率是不对的,营销和粉丝无脑传播的功效里有没有降分辨率成分?我觉得可能是有,但主管emui的王成录接受Anandtech等媒体采访时提到华为从后台做训练匹配各个机型各个游戏的模型再推送到手机上我并不认为是假的,而且这股用人工做人工智能的卯劲剖有你为的风格,谁知道前期是不是模型训练样本不够先降分辨率顶着呢[狗头]。GT终究是个复合产物,简单归一化非此即彼是对工程师的不尊重...
...但华为设定里的“switchable=false”那才是对老子赤裸裸的不尊重啊你fal都false了还设置个屁的“智能分辨率off”的选择按钮啊秀你的开关动画好看吗我估摸着也不好看啊???
其实降分辨率不止有华为,据朋友说vivo家把游戏加入“游戏魔盒”也会降分辨率,虽说至少还有的选不像华为,但苗头已经开始不对了。这股歪风邪气真的不能被带起来——本来吧,在不影响默认设置的情况下针对特定app设置智能设定逻辑分辨率,刨除已有的感情色彩还有点小牛逼小骄傲,毕竟fps游戏里包括我自己在内都有愿意用分辨率换帧数的场景,但拿来跟没降分辨率的竞品刷波评测性能和续航成绩...你有这个必要吗...麒麟虽还没到独步天下,但也绝对是头部玩家了,都这个性能水平需得着这么多邪魔外道小九九啊...


李小龙这次既然都定性为 “bug”了,希望就一改改彻底,别再像之前反馈了给一句“去了解”后就没下文吧。



[ 本帖最后由 EpilogueSKM 于 2019-10-12 13:05 编辑 ]


本帖最近评分记录

TOP

引用:
原帖由 arex 于 2019-10-12 13:00 发表
posted by wap, platform: Samsung
正常操作,老黄显卡也降分辨率的,好像叫什么dlss?
老黄不会默认帮你强制开dlss啊



TOP

引用:
原帖由 八宝斋 于 2019-10-12 20:38 发表
posted by wap, platform: Android
说实在大家玩pc,主机在显示器,大电视上也以1080p为主,手机那6寸屏幕720p,1080p真有区别?
fgo这种2d游戏很明显的


TOP

发新话题
     
官方公众号及微博