帧率欺诈+分辨率欺诈+避免被比较,详解虚幻引擎如何败坏整个游戏渲染生态

首先我简单讲一下游戏画面是如何渲染的。不需要任何相关知识,不需要任何基础,能看得懂人话就能懂的那种。

原来很长一段时间,游戏渲染的步骤大概是这样的。假如一个游戏每秒要渲染60帧。那么步骤如下:

  1. 开始渲染第一帧。
  2. 做所有渲染这一帧该做的事情,把这一帧的画面在显卡的“帧缓存”区域里准备好。
  3. 把准备好的画面放到显示器上。

然后重复这三步。

这么讲够简单了吧?是人都能看懂对吧?先把画面在显卡里准备好,再展现在屏幕上。
如果你对游戏渲染的认知能到这种境界,那你已经比虚幻引擎高一个档次了。
因为现在偏偏就是在“这么”基础的事情上,都出了问题!

现在虚幻引擎不是这么渲染的。
虚幻引擎渲染第一帧的时候,会在第一帧还“没完全准备好”的情况下,就把画面放到屏幕上!
有一部分渲染工作还没有完成,而剩下的工作竟然要分摊到后面几帧去补上。有时甚至会分摊到之后60帧那么多!也就是要过一秒钟才把第一帧的画面完全做出来!
于是导致如果要截静止的画面,最好先等待一段时间。然而这还不够,因为游戏里总有些角色会有站立时的闲置动作,他们总是在动的。
于是游戏必须加入专门的拍照模式,让游戏里所有人物和物体完全静止,这样才有可能截出清晰好看的截图来。

那如果游戏没加入拍照模式呢?那就截不清楚啊!就这么简单。如果是高速运动的画面,直接截图的话就惨不忍睹啦!

没准备好的帧就放到屏幕上。这不是帧率欺诈是什么?
那我也可以做个游戏,明明连每秒30帧都达不到,却号称能达到500帧每秒,实则只是每秒强制把显卡“帧缓存”里的当前内容拉取到屏幕上500次,画面完全没准备好也往上放。
如果这样的话我算不算欺诈?当然算!
可我就是每秒500帧啊,每秒画面更新500次,而且每个新帧的画面确实相比前面帧有变化呀!怎么能算作欺诈嘛!
虚幻引擎就是做的这样的事情,只是没我这个例子这么极端而已。

当然了,有的渲染流程稍微聪明一点,不用后面的帧来完善当前帧的数据,而是用前面已经渲染好的几帧数据来完善当前帧。或者精心调参,调整如FXAA,TAA反锯齿的具体参数,尽可能减少分摊到后面的工作量。
但无论怎么调,避免不了一个本质问题——每次渲染的帧都是个“半成品”帧。怎么改进这个方法都是在研究怎么改进这个“半成品”,而不是从一开始就想着做一个成品帧出来。

总看到有人说DLSS之类的AI补帧技术,造出来的帧是“假帧”……拜托啊,一开始就是假帧好吧!一开始原生渲染的帧都是假帧了好吧!都是要依靠前后若干帧的画面来勉强凑出当前帧画面的好吧。
顺便提一嘴,那个Nvidia Reflex技术其实也是强行展示未完成的帧来减少延迟。我把那个功能开到最高,然后玩哪怕是最老的游戏,转过墙角时,有一瞬间眼前看到的是虚空,被墙角挡住的东西本来应该展现出来,但却先不渲染,先让你把视角挪过去,下一帧再渲染。这不也是刚被取消遮挡的东西看不到,要再等一帧才能看到么?那不是和DLSS补帧的常见缺陷也差不多么。

像是FXAA,TAA这些反锯齿方式,统称为MFAA,即“多帧采样反锯齿”。
哼,我看明明就是“帧率欺诈反锯齿”——"fraMerate Fraud Anti-Aliasing"!或者“误导性帧率反锯齿”——"Misleading Framerate Anti-Aliasing"!

然后每次看网上的讨论,都躲不开一套相关的维稳话术。
总有那么一个人抱怨那些虚幻引擎的游戏为什么不支持MSAA反锯齿,然后又总有回复解释说什么MSAA不支持新的渲染技术,如透明贴图等等。
然后……就完了??

怎么每次都是这样?
明明MSAA反锯齿有一个翻新版,叫SMAA,就是相当于MSAA,但支持较新的渲染技术。
可是每次看到那个抱怨时都没人提一句SMAA,仿佛SMAA根本不存在一样。

这不是维稳话术是什么??这不就是骗人么?!

这让我联想到当初两个类似的骗术:

一是当初宣传光追技术时的骗术。我看过一个视频展现赛博朋克2077里面加入光追之后的光效。然而看到效果之后我简直哭笑不得。因为,街上的装饰灯由粉色“瞬间”变成蓝色之后,地面上的反光,居然要在一秒钟之内“渐渐”由粉色变成蓝色!
我当时就想,没关系,传统的屏幕空间反射(Screen Space Reflection)不存在这个反光滞后的问题。结果你猜怎么着?那展示视频只是对比了三个不同版本的光追,却偏偏没有展示传统屏幕空间反射的效果!
刻意避免比较是吧?

二是一些讲游戏为什么要编译着色器的所谓“科普视频”。说什么主机配置就那么几种,游戏厂商可以直接把编译好的着色器提供给相应的主机。而家用PC配置有许多许多,所以只能现编译。
你看看这多误导人!那为什么当初长达几十年的时间里游戏的PC版和主机板都不需要编译着色器呢?说得好像游戏打开了才现编译着色器,这件事自古以来就一直存在一样。这不是误导人是什么?

这不就是故意的么?假装旧的游戏技术不存在,光说所谓“新”的技术。
关于MFAA恐怕也是一样的套路,不断淡化SMAA的存在,甚至假装SMAA不存在,甚至在最新版虚幻引擎里不支持SMAA!借此避免有人直接拿SMAA技术和MFAA做对比是吧?

这还是多亏一个叫Threat Interactive的频道出了一堆视频说这些事,才终于鼓动虚幻引擎官方加入SMAA支持。然而上面讲的那些维稳话术,怕是一时半会儿消不下去了。
而且这个Threat Interactive频道也很有意思。简单讲一下:

  1. 一堆人在骂他们。Reddit屏蔽他们。有人嫌频道里那人太“精英主义”,如此云云……
  2. Threat Interactive的立场有一点奇怪。他们先是对TAA之类的反锯齿大批特批,但是我仔细看他们视频,似乎每次都是在说如何给TAA和FXAA“调参”。也就是说,并不是主张完全摒弃这些新的渲染技术,而是希望官方不要再骗人,别再把这说成是什么新一代的一站式解决方案,别说成好像你就挑个勾启用LUMEN启用TAA然后问题就都解决了一样。
    这频道的好几个视频都讲了怎么给FXAA和TAA调参。总而言之,就是还是没有一站式的解决方案,得针对每个游戏单独调参数。
    甚至他还比较明确地提出,那个被人以为是“公认很丑”的FXAA,其实可以调得相当好看,只是“从来没被用对过”。还举了几个例子。
  3. 甚至频道里那个人还明确肯定虚幻引擎的垄断地位。说正因为虚幻引擎已经垄断了,所以才要争取改进这个引擎,而不是改进别的引擎。因为现在大作已经都是用虚幻引擎了,把别的引擎改好了,下一部大作还用虚幻引擎,那不是努力都白费了么?
  4. 至于那个SMAA啊……频道里似乎是说这种反锯齿虽然画质特别好,但是对显卡负担确实也是最重的。像我刚才概括的一样,他们重点其实还是放在优化MFAA上面。但他们又庆祝说是靠自己频道十多个视频就攒了十几万订阅才促使虚幻引擎正式加入SMAA。所以我说立场有点儿怪嘛。

在我看来,Threat Interactive频道的态度,相比我这篇文的态度,已经温和太多了。他们说白了还是个虚幻引擎的“改良派”。
可是他们遭到什么待遇?人身攻击,Reddit封杀(导致最需要看他们视频的一部分人看不到这些视频),逼着他们删除视频里号召大家在Steam上评论“fix UE5”的内容。(看见没他说的可是“fix UE5”不是“boycott UE5”。改良派无误。)
甚至还有……死亡威胁??

最搞笑的一点是什么呢?一度有人说,嫌Threat Interactive用的麦克风音质太差。
如果这是问题的话,那么虚幻引擎有个更严重的问题哦。

直到今天虚幻引擎还把高DPI感知功能做好呢!一个从Vista时代就该解决的问题,一个所有其他游戏引擎——啊不,所有其他仍在维护的软件都解决了的问题,虚幻引擎到现在还没解决呢!
简直就是个笑话。每次我在我这125% DPI,1920x1080分辨率的显示器上打开虚幻引擎的游戏,时不常就有1536x864分辨率的情况出现。此时在游戏里调成1920x1080要不无效,要不无法彻底解决问题。必须先退出游戏,然后“右键点游戏主程序——属性——兼容性——更改高DPI设置——替代高DPI缩放行为”这么一通操作下来,再打开游戏才正常。

以虚幻引擎的体量直到现在这么基础的问题都没有解决,以至于,每天(真的是每天!!)我都能看到至少一个虚幻引擎做的游戏,直接打开是模糊的!!!
而别的所有引擎的所有游戏早就杜绝这个问题了!!

你说我听谁的?是听话筒音质不好的人讲的话?还是听都2025年了,连游戏引擎DPI感知都做不好的人讲的话?

每每看到另一个虚幻引擎的游戏又是得手动调DPI兼容设置的。我就想起很久之前见到的一件事。想起来就气。

多年前我在Tales of Aries的Steam讨论区里看到有人反馈说游戏不支持高DPI感知的问题,结果官方回复竟然说什么“因为虚幻引擎的bug……建议手动调下兼容性设置”。
我当时就惊了。
——这引擎是弃坑不更新不维护了还是怎么的?引擎有一个早在Windows Vista时代就该解决的问题,倒是解决啊?引擎有bug?修啊!怎么是这么个态度啊??
结果果不其然,直到今天这问题也没完全解决。你说这帮人是有多垃圾吧。一个世上所有其他软件都早就解决了的问题,他们没解决。追捧一个这样的引擎,还好意思说别人挑他们毛病的姿势不对。
这么大一个引擎不知道怎么摆脱对Windows兼容模式的依赖是吗?!

甚至我都怀疑是不是又是故意的,因为DPI感知问题不修复,游戏就会不经意间以更低的“屏幕分辨率”渲染,如果玩家没看出来,就会以为虚幻引擎还挺流畅的。
但愿不是这样的阴谋。否则这引擎优化是有多烂?连这种垃圾手段都要用上?
分辨率还要造假?而且真造假也不需要这样啊。你可以默认在70%“渲染分辨率”下渲染嘛。干嘛连UI也一起模糊掉呢?

(怕有人真没见过这样的虚幻引擎游戏。我举一个例子:WolfMate。这例子可很有代表性哦。是虚幻5引擎做的,是新出的,而且还是那种开发者试图把画质做好,没有做得一片糊的游戏。结果一打开渲染分辨率是低的。)

关于“分辨率造假还有另一个方面”。
之前提过所谓的“新渲染技术”包含所谓的“透明贴图”。说白了就是允许一些半透明的物体存在,比如头发丝啊,面纱啊什么的。
然而这个技术也出现了造假现象。
因为又渲染那么柔顺的发丝又渲染头发后面的东西,再按照相应的透明度叠加到一起(还不是简单的50%叠加),计算量实在太大了。所以有时候引擎会偷懒,改用所谓的“国际象棋棋盘格”式渲染。

说白了就是每个像素交错着展示“头发”和“头发后面的内容”。这样一来实际上相当于少渲染了一半的像素。
可这效果真的很难看啊!本来应该全挡住一多半亮光的地方,变成了很多细小的亮光点儿渗出来。颗粒感也太明显了吧。
不光是难堪。你知道这技术有多陈旧么?
可以去搜一下一些上古软件如Office95的助手。你会发现里面“大眼夹”身后的那张稿纸,上面好多噪点。但是如果你去搜Office2003助手的大眼夹,稿纸就没有噪点了。
因为Office95时代,很多电脑还都只支持显示256种颜色!!因此要表现更复杂的颜色,只能是这些像素点排列组合,这样你眯着眼看,就好像是表现了一种新的颜色一样。可你要是睁着眼看,明显就是一堆乱七八糟颜色的点儿堆砌到一起了。
或者搜搜透明GIF文件,上古格式硬加入透明。每个像素要么完全透明,要么完全不透明,想模拟“半透明”效果只能交错显示(术语叫“抖动”)。
本来这问题自从32位真彩色——啊不,16位增强色普及之后,就已经解决了的。可现在最近的游戏里,甚至包括《剑星》这样的公认很棒的游戏里,这种上世纪的渲染手段,借尸还魂又回来了!

我把话说清楚。这问题相当明显,以至于是可以“云评测”的。你搜搜相关游戏的视频都能看到很多这样的问题了。
而且不要抱有任何幻想!肯定有人耍无赖说这是什么模拟头发交织中有些细小的孔洞可以让阳光完整透过,之类的话术。如果真的是模拟头发间的缝隙,那不应该只有星星点点的亮点,还应该有几个像素连在一起的细亮线才对。但那些游戏中的亮点永远是分散的,因为那是“抖动”,是用类似透明GIF的技术,硬生生模拟透明。不是缝隙,是抖动。不是特效,是缺陷。不是功能,是bug。

这不也是分辨率造假么?说好的半透明呢?怎么有时候就变成偷工减料,少计算一半像素了呢?

………………

总而言之……
作为游戏引擎的龙头,有能力主导行业发展方向的虚幻引擎,却搞成这个样子。
最最基本的道理,“先把画面准备好再放到屏幕上”这么简单的道理,竟然被虚幻引擎给抛弃了。于是衍生出一系列问题来。
分辨率造假,帧率造假。还一度打压SMAA,避免和所谓传统渲染方案直接比较。
本来游戏画面或者好,或者差,基本上还能守住一条底线。那就是画面差的,至少配置要求不会高。画面又差又吃配置的游戏,以前是几乎不存在的。
然而虚幻引擎出的游戏,就频繁突破这条底线了!大作尚且能挑出毛病来。多如牛毛的小作品更是问题一个比一个严重。开头那个“过整整一秒钟画面才清晰”真不是开玩笑的!我见过好几个了!
有这么个龙头在这里,也别的引擎只会一天天变差的。别的引擎就算再怎么优化,无非也就是个追随者。就拿显卡领域来说,AMD到头来不也得跟风做AI补帧,光线追踪么?
现在有些问题就已经传染到Unity引擎了。或许过几年还会传染到其它引擎。

这还不是最糟糕的……
如果现在不悬崖勒马情况还会变得更糟!
你以为我已经把虚幻引擎的大问题数落了个遍?但现在至少有两个问题我还没提呢。

首先虚幻引擎的配置要求很谜。
假如某个虚幻引擎游戏有“低”“中”“高”“史”四个画质等级,并且画质也有肉眼可见的提升……
然而我无论选哪个画质等级,显卡功耗都是120W,帧率都是60……这算怎么回事???有人也这样吗?我都要怀疑是不是自己显卡有问题了!
初步猜测是虚幻引擎的“假帧”本质,导致渲染率和帧率脱节。上面抱怨的都是渲染频率“低于”实际帧率,导致未做好的帧强行放到屏幕上。而全低特效仍然占满显卡,是否是相反的问题,渲染率“高于”实际帧率了呢?
不光如此呢。甚至我还见过限制显卡功耗反而提升帧率的情况。把显卡功耗限制由120W降到100W,帧率反而提升一点点……这引擎简直就是个谜。

还有,更糟糕的问题还在一个个冒出来。
最近遇到俩游戏,地面上像是有好多好多黑的东西在爬!!!好多完全不该存在的影子在地上爬!满地都是啊!!!!
特效调高的话这问题会轻一点,但也能看出来问题只是被更好地“掩盖”了。
不,不是树影子,我试了把树去掉,一样都是好多黑的东西在地上爬。
会不会几年后全都是这样的游戏啊!天哪!!
(我说一个名字:Roman Triumph Survival City Builder,刚步入1.0正式版。不过这个是Unity引擎的。另一个虚幻引擎的同样毛病的游戏是个单纯的垃圾游戏,名字我不太想提。)

最后还要再多反驳另一种维稳话术:甩锅给开发者。
要判定问题出在开发者还是出在引擎,很简单。
假如是无论什么引擎都可能出现的错误(比如视角旋转速度过慢,胡乱屏蔽调音量键), 那是开发者的问题。
如果只是某一个引擎的开发者容易犯某种类型的错误,那就是引擎的问题,不是开发者的问题。
现在虚幻引擎的一堆问题都是前所未有的,是用别的引擎的开发者,最差劲的开发者,都不会出的问题。因此问题在引擎,不在开发者。
比如只有虚幻引擎的游戏频繁出现“高DPI感知”都做不好这种“上古问题”。这就是引擎的问题,懂了吗?
无数虚幻引擎的游戏直接没有MSAA或SMAA,也没有直接“关闭”反锯齿的选项,这也是引擎的问题,明白了吗?