超能课堂(212):VRS可变速率着色为什么可以提高帧数?
在图灵显卡推出时,NVIDIA也一起公布了VRS可变速率着色技术。虽然目前没有游戏支持VRS,但3D Mark前阵子也更新了VRS的相关测试至支持第二级VRS测试。不过这项技术目前似乎没多少人在谈论,不少人更加是不知道VRS是 什么东西。今天我们就来一起起看看这个VRS到底是什么。
要理解VRS是什么,我们首先要了解一下着色(Shading)是什么。着色是指对于一个东西的平面进行渲染,使其表现出设计者想这些平面展示的色彩及光暗,具体是通过着色器来为每个单独的像素渲染,而这个过程通常是以显卡来进行的。
VRS原理
可变速率着色全称为Variable Rate Shading,是一种在图灵显卡上面可以启用的新渲染方式。与传统的单个像素着色操作只能应用于单个像素不一样,VRS可以使单个像素的着色渲染应用到多个像素上,让应用程序可以根据画面上的不同区域来应用不同的着色率。简单来说,就是通过不同区域的重要性,来决定不同区域画面的精细度,减少显卡的渲染负荷。
图片来源:NVIDIA
目前有7个不同的VRS渲染方法,从高至低分别是1×1、2×2、2×1、1×2、4×2、2×4以及4×4(这里指的是单个着色操作应用到的像素数量)。以上图为例,需要显示细节的地方例如车辆本体、远方的白云、路边草木等就会继续以1×1的方式来着色,而快速变换的路面以及路边就可以用4×4或者2×1等的方式来着色。
不同级别VRS
而VRS也有分两级,第一级VRS可以让开发者对每个图形(Draw Cell)指定一个特定的着色率,而第二级VRS则可以让开发者对每个图形中的不同区域指定不同的着色率。目前第二级VRS只可以在图灵显卡上应用。
而在游戏开发上面,第一级VRS可以让开发者降低画面上远距离的对象的着色率,第二级VRS可以让开发者选择同一个图形哪些地方需要保留细节哪些不需要。
3D Mark VRS测试
听起来这个技术对于帧数会有提升啊!那么实际上是不是这样呢?由于这项技术还挺新,因此目前并没有游戏支持VRS。不过正如上文提到,3D Mark现在已经可以测试一下两级VRS分别对于帧数的提升有多大。
笔者以GTX 1660 Ti来进行了VRS的两级测试,以下分别为1080P、1440P、2160P、以及4320P分辨率的结果。
可以看出来,不论是哪个级别的VRS,在分辨率愈高、显卡压力愈大的情况下,开启VRS后的帧数提升会愈多。而第一级VRS的提升比起第二级VRS也要高,因为第一级VRS之下,同一个图形的着色率都是一样的,要不一起模糊要不一起清晰。而在第二级VRS,同一个图形可以有模糊的地方也可以有清晰的地方,因此提升较小也是正常的。
那看到这里可能有人会问了:“开了VRS之后画面怎么样?”3D Mark 第一级VRS测试里面,在1440P分辨率之下默认开启VRS的效果是下面第二张图的样子,而第一张图则是不开启VRS的原本样子。
不开启VRS
开启VRS
第一眼看上去的话,其实并不会觉得有很大差别。但是如果仔细看的话,会发现开了第一级VRS后,远方的景物会是最模糊的,例如最后面的石壁。而从第二排树木开始,也出现了模糊化,不过程度没有石壁那么高。这是因为在第一级VRS中,着色率是随着景物的距离而下降的。
那么,开了第二级VRS的效果又会是怎样呢?同样,第一张图是没开,第二张图是开了的效果。开了第二级VRS后,前面那幢房屋大门旁边的墙壁会有一点模糊,后面那幢房子的左边墙壁也如此,而远处的山崖上,石头的纹路也会有点打了马赛克的感觉。但是!在第二幢房子旁边的那些树干,却没有表现出被模糊掉,获得了与关闭VRS一样的效果。
不开启VRS
开启VRS
如果是在第一级VRS中,以上两个地方都会被模糊掉,但是在第二级VRS中,因为同一个图形可以有不同的着色率,因此开发者可以选择让它们获得原生1×1的着色率。这也是第二级VRS的作用的实证。
显卡本身性能对VRS的影响
这次用于测试的显卡是GTX 1660 Ti,可以说是一张比较甜点的入门级显卡。那么VRS对于中高通显卡的作用又会是怎样呢?
针对这个应该也不太可能有人会问的问题,笔者也用了一张RTX 2070进行测试来解答。
从以上的对比结果可以看出,在1080P分辨率之下,RTX 2070透过VRS所获得的帧数提升要低于GTX 1660 Ti的不少,相差了百分之7。来到了1440P分辨率,两者之间的差距就可以说是完全没有了,仅仅相差百分之0.2。而在2160P分辨率,大家的分别也不是很大,不到百分之1也是在误差值之内。但是到了4320P分辨率,这个差距再一次被拉大,而这次是RTX 2070领先GTX 1660 Ti大概百分之7左右。
按照这个结果,笔者推测: 如果是在渲染压力比较小的情况下,中高端显卡获得的提升会比入门级或者甜点卡要小;在渲染压力开始加大,但仍然在大家的承受范围内的话,大家获得的帧数提升将会是一样的;而当渲染压力大到超出甜点卡所能承受的范围时,那么中高端显卡多资源的优势就可以得到体现,帧数的提升也会比甜点卡高。
对游戏影响
既然画面的部分区域会模糊,那会对游戏产生什么影响呢?由于目前还没有游戏支持VRS,因此笔者只能推测一下。
首先赛车类游戏,就正如NVIDIA自己都用赛车游戏作为示范一样,因为画面上会拥有很多快速变换的区域,例如不停在变换的道路和路边的草丛,玩家大部分时间对于这些地方的注意力其实是比较低的。既然这些区域的注意度这么低,那如果把它们的着色率降低一点,玩家也不会注意到画面整体的变化。
MOBA类游戏的「宁要帧数不要画质」的特性也使得这类游戏在使用较低着色率时有着更大的空间。这类游戏的玩家注意的地方也很好推测,主要就是画面上会动的人物。即便玩家怀疑一个草丛中藏着敌人,也不能够单靠用眼睛看就看得到,而是要动手去查探。因此,除了人物外的其他东西,例如建筑物、水坑、花草等的细节即便有所减少,对于玩家的游戏体验基本上影响为零,而降低这些区域所带来的帧数提升却是非常实在的。
至于FPS类游戏,则需要分成两种情况,一种是开启第一级VRS,第二种是开启第二级VRS。在第一种情况下,画面的着色率会随着图形的距离而降低,愈远的景物愈模糊。这对于诸如吃鸡、ARMA等需要远距离击败敌人的游戏来说会是一个致命伤,因为FPS玩家更加倾向于能够看清楚敌人。如果把远处的敌人的着色率降低的话,那么玩家很有可能都不知道是怎样死的(咳咳,虽然现在也是差不多)。
而如果是在第二种里面,着色率是由开发者根据每个图形而定的话,那么在远距离的敌人也可以被看清楚,不至于看远方的人都是一坨影子。配合其他降低了着色率的对象例如花草树木等,反而可以更加容易突显出人和疑似人的对象的分别,使玩家更加容易发现敌人。此外,由于大地图FPS游戏的特性,画面上所有对象的高着色率也使得它们对显卡的负荷更大,VRS所带来的帧数提升也会更加明显。
说起大地图,就不得不提RPG类游戏。与上面所提到的FPS游戏一样,RPG游戏也是倾向于拥有大地图,很多不显眼什至玩家完全察看不到的地方都是以完整着色率来渲染的。因此如果是开启了VRS,那么对于帧数的提升也会是可观的。不过对于RPG类游戏来说,VRS的效果基本上可以用替换掉高分辨率材质这个方式来实现,也就是打上低分辨率材质的MOD。目前热门的RPG游戏,特别是开放式世界的RPG游戏,都有很多这类的材质MOD可以用。
但是,VRS与材质不同的地方是它有非常大的灵活性。打了材质MOD后,玩家不论远近,看那块换了材质的地方都只会看到模糊一片;而用VRS的话,着色率会随着玩家的靠近而提升,材质也会愈发清晰。
实际应用
上文提到过,VRS是通过降低玩家注意不到的区域的着色率来提升效能。而在实际游戏过程中,游戏是无法知道玩家的注意点是在哪个区域上。例如玩家想观察远方楼房里到底有没有敌人,但开发者可能觉得在这个距离上玩家注意力应该是在更近一点的地方,因此在这个距离上把楼房的着色率降低了。这对于玩家实际上的游戏体验还是会有点影响的。
那么VRS最能体现出价值的地方,是在哪里呢?答案是在VR上。一来VRS可以帮助解决VR游戏中帧数过低的问题,二来VR游戏可以利用眼球追踪。
VR游戏对于硬件需求之苛刻是众人皆知的。哪怕是RTX 2080 Ti也不能够在VR里面4K之下以60帧打游戏。而VRS愈高分辨率提升愈多帧特性,在这个情况下就正正可以用得上。想想看,从30帧直接提升到50帧,虽然达不到流畅60帧的标准,但是已经属于能够比较流畅的玩游戏了。
而在游戏不知道玩家在集中看哪里的毛病也可以得到解决。NVIDIA表明VRS可以配合眼球追踪技术一起使用,开发者可以让玩家眼睛盯着的地方用上最高着色率,而其他地方则可以降低。这样既不会对玩家视线所及的地方有任何模糊化,而其他玩家没有在注视的地方可以适当地模糊,可以说是一个比较完美的帧数与画质结合。
总结
VRS作为一项新技术,效果是挺让人期待的。可局部调整画面着色率所带来的帧数提升也是比较明显。如果开发者运用得当的话,降低着色率所带来的部分区域模糊化对于玩家来说是不太会感觉得到的。
不过在目前没有游戏可以验证VRS功能的情况之下,VRS的实际效果有可能会比想象中的要小。但这并不代表着VRS是鸡肋功能,因为当应用到VR上面时,它所带来的效能提升将会是不容忽视的。