为什么绝地求生画面差还挑显卡?画面卡顿原因

2018-01-01 01:58:30 作者:多玩 来源:多玩

今天我们在这里给大家解决的问题是为什么《绝地求生》画面差还挑显卡?为什么我的配置不是很差,但是画面还是卡顿?

为什么绝地求生画面差还挑显卡?画面卡顿原因

我从一个开发者的角度来回答一下这个问题吧,首先,UE4 是真的算比较吃配置的引擎了。题主所说的,画面不好这点我不敢苟同,额,敢问多少人进游戏后都会哲学三问,我在哪?敌人在哪?谁在打我?好吧,其实这都是引擎效果的锅。那么到底哪些地方是特别耗资源的呢?(以下分析基于我玩游戏观察到的,没有去深入游戏做逆向分析,如有偏差,欢迎指正)

1.SSAO- 屏幕空间 AO,如果你开默认配置,站在墙边,你会发现,墙上似乎有一圈你的外轮廓。这就是实时计算的屏幕空间 AO 了,AO 是当两个物体靠的很近时,互相会遮挡某些方向的间接光照,所以物体在靠近的时候会有明显的暗区。UE4 的 AO 分为实时 AO 和烘焙 AO,烘焙的 AO 都是已经预计算好的信息存在光照贴图中,载入时不需要耗费计算资源,只需要花费显存的位宽。而实时的 AO 也就是屏幕空间 AO 就特别费计算资源了。每一帧渲染时,会在屏幕空间渲染出一张 AO 贴图,然后这张图在渲染管线的后期再进行混合,得出的画面就非常有层次感。SSAO 在光照渲染的阶段,会耗费大量的时间,所以带来的后果就是拖慢了帧率。SSAO 也会在草地内形成暗区,所以为了防止伏地魔,关爱你的显卡,最好关掉这货。当然做开发的盆友,特别是做 VR 游戏的盆友,如果发现一直优化帧率一直上不去,不妨检查一下,你会有惊喜的。

为什么绝地求生画面差还挑显卡?画面卡顿原因

为什么绝地求生画面差还挑显卡?画面卡顿原因

2.宏大的开放地图。是的,绝地求生的地图很大,而且是一次性加载完,没有做流关卡。虽然得益于 UE4 的 Landscape 自动平滑的 LOD(细节层次,就是你走的越近,模型越精细),地形本身不会耗费太多资源(作为一个曾经把重庆的奉节县,云阳和巫山的局部真实地形做到 UE 里的人,表示 Landscape 超级省资源)。

不过地面上的建筑还是面特别高的,所以整个场景的最小面数都不会太低,这意味着内存开销不会太低,好在绝地求生里引入了 Simplygon 插件,来优化整个场景的面数问题(就是站在远处用 15 倍镜看桥之类的东西,会晓得凹凸不平,以及蛋糕房子的始作俑者),所以本质来说场景总面数还是不少,所以在渲染管线前期需要载入的数据比较庞大,自然也就吃配置咯。因为所有的场景顶点信息、着色器信息、贴图、LOD 模型等等都会存到内存中,所以这个游戏内存开销很大,并且前期对这些数据进行处理的是 CPU(各种剔除工作,逻辑运算都是 CPU 完成的)。

3.草地。

各位 LYB 的最爱,对绝地求生这个游戏而言,草地绝对是整个游戏至关重要的精髓,而且草地会直接影响游戏平衡性。而草地的渲染是真的真的费资源。我们看到的草地,他的本质实际上是一个面的贴图,再加上 Mask 材质做成的,Mask 材质中会有一张贴图,表示哪里是镂空的,哪里是可见的,就好像网袜一样(咦?)。在我们开发过程中对画面的帧率优化有个很重要的指标就是着色器复杂度,着色器复杂度表示了当前材质渲染着色的时候计算量的大小,而 Mask 材质属于着色器复杂度第二高的类型(第一是透明材质)。而另外一个非常重要的问题是,Mask 材质的可见性检测实在着色阶段才做的。

按照一般的渲染管线,首先是可视化剔除,就是把场景中看不见的顶点和物体剔除,后面渲染的时候就不处理那些顶点信息。然后是遮挡剔除,就是去掉那些被遮住顶点,进一步减少管线后期的计算量的。但是 Mask 材质不会做遮挡剔除,所以其后面的所有顶点都会参与到后期的计算中,然后在着色的时候被着色器 pia ji 一下盖住(Over Draw),前面所有的计算都浪费了……而且要营造出层层叠叠的,可供伏地魔趴在里面的草原,就需要非常多的面片。所以任何户外游戏的草地都是有做 LOD 的,而且最高层级的 LOD 一定是没有面的(所以为什么绝地求生里远处的草坪就空了),但好死不死草地有是影响游戏平衡的重要因素,所以绝地求生的开发人员表示,我能怎么办,我也很绝望啊。

为什么绝地求生画面差还挑显卡?画面卡顿原因

为什么绝地求生画面差还挑显卡?画面卡顿原因

为什么绝地求生画面差还挑显卡?画面卡顿原因

为什么绝地求生画面差还挑显卡?画面卡顿原因

4.材质和贴图。首先,绝地求生的材质都是真真的次时代材质(再次不服题主说的画质差的问题),次时代材质最大的特点就是,材质会随着你的观察角度不同,距离不同表现出不同的细节和效果,最终实现"物理正确"的还原,给用户的直观感受就是真实(因为符合我们平时的视觉习惯相同)。打个比方,丝袜大家都看过吧(不开车,不开车,没看过的自己去搜图片),大家如果仔细观察丝袜就会发现,丝袜不管从哪个角度看,边缘都会比中间透光小。

而这种效果必须得是根据观察角度不同而变换的,这就是材质的意义。所以每一帧渲染,都需要进行大量的材质效果运算(就是前面说的着色器复杂度啦)而很多运算需要用到细节贴图,所以贴图的量也很大,贴图和材质,一个需要显存,一个需要流处理器。嗯,,,这就是为啥得用好显卡。

为什么绝地求生画面差还挑显卡?画面卡顿原因

5.AA- 抗锯齿。现代游戏中,没有抗锯齿都不好意思拿出来见人了,然而要知道,抗锯齿需要的是非常非常高的性能开销。UE4 中默认的抗锯齿是 TAA,相对于 MSAA 这种渲染 2 倍的分辨率再降采样的暴力算法,TAA 则更省性能。TAA 的抗锯齿算法其实也是类似于 MSAA,进行超分辨率渲染,然后再降采样,但是 TAA 将这个超分辨率渲染的过程分摊到了若干个帧上,也就是 1+2+3>>>4 的模式。这样渲染的好处是,在画面比较稳定的情况下,抗锯齿效果忒好,缺点就是快速移动的画面或物体会有鬼影。

6.动态模糊。动态模糊就是在你移动的时候,画面会出现因为移动造成的模糊效果。动态模糊是在后期处理的时候进行的,也就是当前帧渲染、着色完成后的操作,在后期处理中,动态模糊也算是比较费的部分。

为什么绝地求生画面差还挑显卡?画面卡顿原因

其实开发商已经做过了很多优化和处理工作了,关于这个,后面我再详细补充关于绝地求生大逃杀到底优化了哪些内容的部分。对于一款早期预览版游戏来说 PUBG 已经做得很不错了,但是毕竟不是正式发售,开发周期也短,所以出现一些优化不好的问题实在是太正常了,正式版体验服我玩过了,还吃了鸡,各种程度上的优化进步。那些一天到晚吼着优化渣的盆友们,嘴炮说两句是真的很容易,来,跟我一起研读一下 UE4 的源代码,让你知道一下平底锅是铁做的。

免责声明:文中图片应用来自网络,如有侵权请联系删除