为何《战地V》光线追踪性能不叫人满意?这篇访谈能告诉你很多 ……
不算我们自己测试的《战地V》,外媒测试的游戏基准性能跟开启光线追踪的性能已经有很多,今天要来谈谈的是大家都很熟悉的Eurogamer,他们虽然文章看起来总是很长,但是内容还是蛮详实的,而且他们的版面图片浏览应该是有特别的代码,观察效果对比很方便。他们之前在测试《战地V》光线追踪性能的时候有谈到很多细节,比如说性能部分,我们都知道尽管现在能跑光线追踪的显卡就三款:RTX 2070、RTX 2080、RTX 2080 Ti,但很明显他们还有性能优化的空间,这方面Eurogamer在最近的文章中有谈到很多,而且还邀请来自EA DICE的工程师Yasin Uluda来谈到很多性能优化的问题。
比如说在这次的这篇文章当中,Eurogamer就提到在很多时候,游戏因为各种错误会渲染出远远比实际需要的多得多的光线,再加上其他的问题,所以会对性能有较大的负面作用,比如说包围盒(Bounding Box)错误而造成的性能流失,或是因为可破坏地形的渲染,或者是特定位置营造的假的上帝光(God Rays)、特定类型的植被都会造成性能的不必要流失,让游戏渲染比实际需要的多得多的光线(Rays)。所以在不同的地图会有不同的表现,比如说沙地、泥土、雪地、岩石覆盖较广的地图表现会稍高,但是在较为复杂的地图,比如说我们测试的鹿特丹地图,性能就会受到稍大的考验。
这次跟Yasin Uludağ的谈话内容首先开场就是比较硬核的问题,我看原文都需要稍花些时间才能理解。首先开场的问题是,目前不用的四种光线追踪选项:低、中、高、特高分别有哪些区别,而答案是这样的:
Low: 0.9 smoothness cut-off and 15.0 per cent of screen resolution as maximum ray count.
Med: 0.9 smoothness cut-off and 23.3 per cent of screen resolution as maximum ray count.
High: 0.5 smoothness cut-off and 31.6 per cent of screen resolution as maximum ray count.
Ultra: 0.5 smoothness cut-off and 40.0 per cent of screen resolution as maximum ray count.
大家可以看到,四种选项最大的区别是前面的smoothness cut-off,还有后面的ray count。这里我理解的是这样。喜欢研究图形学的读者们应该知道,图形渲染跟现实的物理、数学是脱不开关系的,所以游戏画面中看到的反射画面、光线投射的背后都是复杂的积分公式,通过它们来定义物体的表面材质,并以此来定义反射情况,最典型的就是表现光滑程度,之所以我们以前总是会觉得虚幻引擎3会表现比较黄、比较油,就是表面的材质定义有问题。
这里的前半句描述的smoothness cut-off就是指光滑程度,也就是用系数来描述光滑程度,0.9就是指那些比较光滑的表面,例如玻璃、铝合金、银,而如果有0.1的话,就应该是指岩石、水泥、石灰这些表面粗糙、很难反射的物体。而后半句则是描述分辨率与光线的关系,比如说1920*1080,简略来看就是200万像素,如果是1:1,或者是100%定义话,就是每像素对应一道光线,则同屏需要200万以上的光线,而15%则就是采集屏幕分辨率15%的光线,所以简单来说,特高画质对应的是最繁多、最复杂的反射情况,而且需要绘制最多的光线,而反过来,低画质则是对应最简单、最少量的反射情况,而且需要绘制的光线最少。
但尽管如此,目前《战地V》还是有使用不少不错的性能优化技术的,比如说目前使用的Super Tiles,这是一种可以帮助实现重新指令光线的技术,这技术描述起来有点复杂,说简单点就是利用相似的位置,能够绘制类似的光线、三角形,对于材质缓存跟指令缓存都很友好,所以应该是一种减轻工作量的技术,尤其是对RT Core这种硬件级的加速核心很友好。另外还有一些优化光照性能(Lighting Performance)的技术,能够将不同的光照、立方贴图做成类似方格坐标的架构,所以非阴影光照、阴影光照、箱式立方贴图(Box Cubemaps,我其实不知道怎么翻译),至于这样有怎样的效果没有具体说,但最后就是会处理信息快一些。此外还有NVIDIA提供的“Variable Rate Ray Tracing”。
因为原文实在是很长很复杂,短时间要看完难度很高,大家可以前往这里自己阅读,文章后面的很多篇幅都是关于未来的性能优化安排,看起来EA DICE自身是知道问题所在的,但很多技术看起来都相当复杂。