漫威蜘蛛侠 迈尔斯·莫拉莱斯

Marvel's Spider-Man: Miles Morales

漫威蜘蛛侠

Marvel's Spider-Man

《漫威蜘蛛侠》光线追踪分析:现阶段光追会做出怎样的平衡?

作者 Liffy_Island   编辑 Liffy_Island   2020-10-05 13:18:47

还有很长的路要走。

      近期开发商 Insomniac Games 放出了《漫威蜘蛛侠 Remastered》和《蜘蛛侠 迈尔斯·莫拉莱斯》的实机演示片段。游戏技术分析媒体 Digital Foundry 深入详解了两个片段,解答为何有些效果看起来不是很理想。笔者注:本文结合了 Digital Foundry 文章视频两部分内容而成。截图皆来自 DF 的视频)


      先说基本情况。《漫威蜘蛛侠》在 PS5 上有 4K+30 帧高画质模式和 60 帧高帧数模式。高帧数模式依然使用了 PS4 版本的屏幕空间反射技术(SSR),该技术只能针对屏幕画面里的物体进行反射,画面之外的物体就束手无策,会导致视觉表现不连贯的问题。

      而高画质模式采用了光线追踪反射(ray traced reflections),还有光线追踪环境光遮蔽(ray traced ambient occlusion,下文简称 RTAO)。RTAO 因为通过视频或者截图是很难向观众展现出来,因此不作为本次重点讨论部分,但总之 RTAO 可以提供诸如僻暗的角落这种地方更加真实的黑暗效果。


光线追踪反射原理

      光线追踪确确实实带来了画面提升,但截图展现的效果还是有瑕疵。光线追踪的表现过程和帧数表现之间敏感度很高,而开发者受制于有限的资源去实现光追效果。效果不够理想具体要从光线追踪反射的原理出发来进行解释。

槽点很多的官方截图

      光线追踪反射大约分成四个步骤。我们用 4K 30 帧画面进行讨论,这样每一帧的运算时间是 33.3 毫秒,假设其中 8 毫秒用户光追反射运算。(笔者注:此处和下文的所有运算时间仅为理论模型,帮助读者更好地进行理解,并非实际数据)


      第一步,光追反射基于能从任何方向发射出来的光而实现——可以从屏幕画面以外的地方发出,以及非常非常远的地方发出。游戏需要生成一个简单易读的版本场景来给后续的步骤做计算。越庞大越复杂的细节,越多动态的物体,那就需要越多的 GPU 时间来生成它。

      第二步就是光线追踪了,也是有专门硬件进行加速的步骤。光线照射到第一步建立好的简单版本场景。为了准确绘制出与几何体的碰撞,所有场景里的物体周围都有一个看不见的长方体轮廓。当光线打到了一个物体的轮廓上,就会被标记为后续需要着色的地方。越多数量的光线,越多数量的物体,就会有越多的碰撞,由此带来更长的处理时间。

      第三步就是给第二步标记的像素点着色。越多击中的像素点,以及越复杂的着色方式,就需要 GPU 更长的处理时间。因为光线的数量是有限的(跟现实世界中近乎无限的光无法比拟),最终结果会看起来很粗糙,充满了噪点。所以还需要最后第四步对画面进行降噪处理。最终,呈现出更加真实令人信服的反射。


      即便第二步有专门的硬件加速,但整个过程对于 GPU 的负担仍然很大,妥协是不可避免的。

      现在,假设这四步分别消耗了 6、6、6、1 毫秒,总共是 19 毫秒,这与先前设定的 8 毫秒相差甚远。那么该如何做出有效的妥协来让画面看起来仍然不错,同时符合游戏设计目标呢?通常前三步比较适合降低效果。


下一页:如何平衡

| (58) 赞(66)
Liffy_Island 小吃货

关注

评论(58

跟帖规范
您还未,不能参与发言哦~
按热度 按时间