欢迎光临散文网 会员登陆 & 注册

【知乎】如何评价华为Mate60 Pro玩原神出现贴图错误?

2023-08-31 18:15 作者:小林家的垃圾王R  | 我要投稿

如何评价华为Mate60 Pro玩原神出现贴图错误?


Coresi7


腾讯光子工作室 游戏图形开发

琴梨梨OvO

 等 3,570 人赞同了该回答


就证明他们的CPU和GPU主要是GPU真的是自己自研的,游戏厂商需要时间给它做适配。

不说CPU,就说商用版本的GPU,很多GPU以及对应的驱动程序都会为游戏引擎做出来很多妥协,trick和小修小改,这些东西累积的多了,就会变成它们自己的壁垒。

比如说,pow(a, b)这个函数,假如因为shader运算有问题,传入A的值是负值,则GPU运算结果是不可预知的,那应该GPU运算结果是NaN呢还是0呢?前者的话,与NaN进行的任何运算输出结果都是NaN,输出到屏幕会变黑,效果不对;后者,计算结果看起来是没问题的。

我们做渲染,绝大多数情况都是“看起来没问题”的,为了“看起来没问题”但是可以取得最佳性能,每一个和大家见面的游戏都做了数不胜数的优化,甚至是奇淫技巧的优化,以尽可能使得发出去的游戏,发热降低,帧率稳定,节省性能空间来开启更高更好的效果。这种事情多了,肯定会多多少少写出来这种bug的。

同样的道理,除以0,与模为0的向量进行叉积,在俯视角为0的情况下进行投影矩阵运算,用0去做正切(tan)运算,一个特别大的数和一个特别小的数进行浮点数运算但是给的浮点数精度不够…………这种计算结果在数学上没有意义的问题实在是太多了。当然,为了杜绝这种问题,我们可以每一次都去约束输入和输出值,对每一个计算的输入和输出进行检查等手段来解决,但是这种约束也好,检查也罢,都是要消耗额外的性能的。结果就是发热卡顿降帧等大家所不希望看见的结果。

这个算是游戏bug,但如果游戏体量太大,或者游戏侧因为技术原因无法来得及尽快更新解决,那么手机厂商自己也会在驱动层尝试应用一些方法去修复。比如说,现在大多数手机,pow(a, b)在a的值为负值的时候,输出值就是0。某些老款型号才会输出NaN。故绝大多数情况下,我们不需要再为这个a额外做一个abs或者clamp之类的运算来约束了。看起来优化并不大,但是假如这种运算是给若干覆盖屏幕面积特别大的半透明面片逐像素运算的,故每秒可以发生上百万甚至上千万次呢?这性能不就省出来了非常多了不是。



也就是因为华为一切都是自己研发的,这类经验和坑积累的少,踩得少,才需要逐个积累经验适配。

另外,这款机型本来和我们打招呼是晚一些才会发布的,结果发布的时间比预期早了亿点点,所以运行我们的游戏也会有点小问题。虽然我们紧急制作了个补丁,但估计得稍晚些才能和大家见面。确实也打了我们一个措手不及。作为游戏开发者,也希望这种真国产自研的产品多多和大家见面,不然如果有朝一日美国等西方国家极限卡脖子,造成我们没有了游戏赖以生存的硬件环境,那我们能吃什么喝什么呢。


最最后:

估计华为厂商为适配这些大大小小的问题会给这个手机频繁发更新,如果更新的话,希望大家能及时接收。人是活的,问题总会解决的,稍安勿躁。


编辑于 2023-08-30 15:18


【知乎】如何评价华为Mate60 Pro玩原神出现贴图错误?的评论 (共 条)

分享到微博请遵守国家法律