阿凡达:潘多拉前线-大型开发者技术访谈

《阿凡达:潘多拉前线-大型开发者技术访谈》充满趣味与专业精神

《阿凡达:潘多拉边境》几乎突然就成为今年最精美的游戏之一,这款电影系列的标志性场景与几乎与《危机》风格的游戏玩法和新升级的Snowdrop引擎完美融合-该引擎最早是在十年前的E3上与《全境封锁》一同公布的。更重要的是,《阿凡达》不仅在PC上是一场技术的胜利,它推动了图形技术的边界,而且在PlayStation 5、Xbox Series X甚至是Series S等主机上也表现出色。

开发这款游戏的工作室是育碧 Massive,最近数字发现的Alex Battaglia有机会采访了这个技术开发中的两位关键人物:游戏的技术总监Nikolay Stefanov和Snowdrop引擎的渲染架构师Oleksandr Koshlo。

接下来的采访将带您深入了解 Massive 是如何开发 Snowdrop 引擎,如何将潘多拉世界呈现为视频游戏形式,并为您呈现一种不再常见但质量非凡的游戏类型。正如往常一样,问题和答案都经过了轻微编辑以保持清晰。祝您享受阅读!

这是《阿凡达:潘多拉边境》的完整PC技术评测,详细介绍了它的许多系统以及它们的优点和不足之处。

数字发现:我在玩游戏时注意到的第一件事是你们使用了全新的全局光照系统。自从2018年RT可用的GPU问世以来,我们见过许多不同的技术来实现硬件RT光照,所以我很想听听这个版本的Snowdrop引擎是如何实现的,以及你在其中的开发中的参与。

Oleksandr Koshlo: 我是Snowdrop的渲染架构师,所以我的工作是寻找图形渲染器开发的总体方向。我花了很多时间在我们的光线追踪中关于包围体层次结构的管理部分,而我们团队的其他成员则花时间在实际的照明,也就是“光线”的部分…我们的光线追踪世界中有几何体的低细节表示以及平均材质。它是一个屏幕空间追踪、世界空间硬件追踪和探测器追踪的组合,以获得正确的照明效果。

所以这个过程是进行屏幕空间追踪。如果我们命中了某个物体,就对它进行照明,如果没有命中,就用硬件光线继续进入光线追踪世界。根据效果的不同,无论是漫反射全局光照还是镜面反射,光线的长度都是不同的。因此,如果在光线的长度上没有命中任何东西,我们就会退回到探测器的结果。所以我们从探测器上得到未命中光线的结果。如果你命中了某个物体,我们用我们的局部光、阳光以及来自探测器的反馈进行照明。探测器既是未命中光线的替代品,也是次要光源的来源。这就是我们获得反馈和多次反射的方式。

Nikolay Stefanov: 我想其中一个你会发现我们的问题是-因为我们都是瑞典人-我们在给事物命名方面非常糟糕。所以我们没有一个引人注目的名字。但是我认为这是一个非常酷、多功能的系统,让我们能够充分利用我们迄今为止所做的所有不同技术。所以,对于《全境封锁》来说,我们有基于探测器的照明,现在我们继续使用它作为二次反射的缓存、屏幕空间GI和光线追踪。当然,我们也充分利用硬件光线追踪的优势。但还有一件事我认为我们应该提到的是,我们还有一个用于此的计算着色器回退,适用于不支持硬件加速的图形卡。

Oleksandr Koshlo: 有点难以区分屏幕空间和世界空间光线,因为我倾向于将世界空间光线称为“硬件光线”,但这些光线也可以在软件中执行,当我们谈到探测器时,我想强调的是这些是实时光线追踪的探测器,没有预计算。

数字发现:这也是我想知道的,因为我想象你们也会用探测器来处理透明度-如果你们回退到之前的预计算辐射传递(PRT)系统,它们肯定不会有这里看起来高质量。

尼古拉·斯特凡诺夫:确切地说,这种探头更像是一种辐射缓存,可谓不可言喻。说到“烤进去”的东西,这个系统的另一个很棒的地方就是它让我们可以省去所有昂贵的烤制过程,因为潘多拉世界要比我们之前在《全境封锁》系列游戏中所拥有的环境详细得多,区域也更多。我们最初使用的是PRT系统,它需要几天时间来烤制整个关卡,对世界进行迭代需要花费很长时间。所以有一个可以实时移动物体并查看变化的系统真的很好,尤其是当涉及到室内场景时。

Digital Foundry:是的,游戏一开始就是在室内环境中,你可以从人物使用手电筒的情况中注意到,他们会在你通过时重新点亮周围的世界。正如预发布材料中提到的那样,阴影使用光线追踪技术。你能解释一下它是如何工作的吗?

奥雷克桑德尔·科什洛:就像我之前提到的,我们对BVH有一个低细节几何表示,这意味着我们不能精确地使用光线追踪技术来生成阴影…但我们在两个方面上使用它。一是接触阴影,即向光源发射短光线,看看是否与任何表面接触并生成接触的硬阴影。另一个方面与此相反,即远程阴影。在我们的阴影级联范围之外的任何物体都进行光线追踪,这就是我们得到远距离阴影的方法。

尼古拉·斯特凡诺夫:这用于大石拱门或者飘浮在远景中的岛屿等物体,这对于我们来说非常重要。我们还对地形进行了光线追踪,如果我没记错的话。

奥雷克桑德尔·科什洛:我们对地形进行了光线追踪,而且还在光线追踪世界中添加了冒牌货(imposters)。所谓冒牌货就是经过硬件追踪的方块。一旦我们与方块接触,就会对那个为树木烘焙的位探射光线。

尼古拉·斯特凡诺夫:你会发现我们的很多技术都是现有技术最好的部分的结合,我们将它们组合在一起以获得最佳的结果。

Digital Foundry:我只在PC上玩过游戏,但我非常好奇如何在Xbox Series X、Series S和PlayStation 5上扩展此系统,因为在某种程度上硬件的推动力是有限的。

这里是Tom关于PS5、Series X和Series S上的游戏表现的视频。令人惊讶的是,考虑到图形效果的水平,游戏的性能表现得非常好。

奥雷克桑德尔·科什洛:我想说这一点确实是个挑战,但我们有很多可以调整的参数以适应不同的质量和硬件。光线数目、结果分辨率、去噪的质量、结果的精度,以及射线的长度都可以变化。我们存在一些权衡。如果不要求那么精确的话,我们可以更快地追踪光线,所以让我们使用这个选项。我们可以进行一些大的调整,比如分辨率,也可以进行一些非常小的微调。

尼古拉·斯特凡诺夫:除了GPU性能外,我还想说我们在内存方面也需要进行扩展,尤其是在Series S上可用内存比其他目标平台要少。例如,我们在较短的距离内加载光线追踪世界,所以一些远处的阴影不会像其他平台上那样精确。我们用于BVH的某些几何形状,在光线追踪技术中,比其他平台上的LOD要低。类似这样的细节。

Digital Foundry:所有合理的扩展,适用于全局光照技术。你提到的其他光线追踪技术,例如地形阴影或接触硬阴影,这些在游戏机上也有吗?

奥雷克桑德尔·科什洛:是的。实际上,所有效果在各个平台上都是相同的,尽管在PC上我们提供了更多可以禁用或启用的选项。

Digital Foundry:所以你说BVH中有简化的世界?那些包括哪些植被或有皮肤的角色的方面呢?

Nikolay Stefanov: 我认为大部分几何体默认包含在光线追踪世界中;我们倾向于移除非常非常小的事物。例如,并非所有的草都会在光线追踪世界中,也不是所有的微小细节都会在光线追踪世界中。角色是存在的,或者至少大部分角色应该是存在的。总的来说,这取决于技术艺术家决定是否希望某些东西存在。

我认为你会发现有一些有趣的考虑。例如,如果有一个非常小而明亮的物体,实际上将其从光线追踪中移除可能会更好,以减少噪音。另外,由于内存限制,不应该在光线追踪世界中包含所有几何体。概括来说,默认情况下所有东西都在光线追踪世界中,但技术艺术家可以决定单独关闭某些东西并将其移出光线追踪世界。

Digital Foundry: 所以你提到了小而明亮的物体。在这方面,我在游戏中注意到支持辐射光照(emissive lighting)。你能告诉我它是如何应用的吗?它是否”只是有效果”?

Oleksandr Koshlo: 它只是有效果。这作为全局光照的一部分工作,当射线碰到发光表面时,它会对光照做出贡献。但是显然,如果是一个小表面,并且我们随机在场景中投射射线,会有射线碰到小表面从而引入很多噪点的风险。因此,我们建议我们的艺术家将小的发光表面从光线追踪世界中移除。

Nikolay Stefanov: 如果我能用路径追踪术语简要解释一下,我们所做的是一种特定的技术,称为”引导路径”。基本上,在第一个射线的作用下,我们通过分析计算光照。所以我们不仅仅进行完整的蒙特卡洛路径追踪。但是这仅在分析光源上适用。对于发光表面,正如Sasha所说,我们实际上依靠射线的随机性。这就是为什么这会比分析光源引入更多噪点的原因。但发光物品确实有效,并且我们完全支持它们。

Digital Foundry: 所以你在谈论射线引导?该项目是否有考虑使用ReSTIR或ReGIR,以改善随机性的结果?

Oleksandr Koshlo: 我们确实考虑过。我们在光线追踪技术、去噪技术方面做了很多研究。我们最终没有使用ReSTIR。我们仍在评估并将评估光线追踪的所有进展。但我认为我们在去噪方面有非常优秀的人才,他们不懈努力地解决这个非常困难的问题,我们对最终结果非常满意。

Nikolay Stefanov: 我认为如果你想针对Xbox Series S,我们使用的技术组合大致可以达到你的目标。一些第一次反弹的全局光照加上一些探针缓存等等。我认为ReSTIR和其他技术虽然非常有前景,但要让它们在主机上运行并且以60fps运行是困难的。

Digital Foundry: 实际上是在项目的哪个阶段您开始让艺术家们使用光线追踪的能力的呢?是在项目的初期阶段吗?还是在中途替换旧的PRT系统时才开始的?

Nikolay Stefanov: 比中途早一点,但正如我所说,我们最初使用的是PRT,或者说我们甚至在某个时候回到了Dunia引擎,只是为了减少烘焙时间。所以对我们来说,转换实际上相当容易,因为光线追踪的质量远远优于预渲染方法。这是在项目的前期阶段完成的。在视觉方面,影响相当小。

有趣的一点是,在构建光线追踪时,实际上需要遵循不同的资产设置规则。例如,其中一个需要做的事情是确保室内是水密的,否则会有来自室外的光线渗透。我们还需要对象具有双面性。所以有些事情在以前是不需要做的,例如,你只需要一个面向墙壁的GameTopic,而现在你实际上需要制作双面的,以确保所有的探针等等工作正常。

Oleksandr Koshlo: 几何图形现在需要更加贴近真实世界。

Digital Foundry: 关于探针,它们在游戏世界中是如何放置的?是一个网格吗?还是有一定的选择性?

Oleksandr Koshlo: 它是一个稍微有选择性的网格 [大家笑了起来]。所以我们仍然有一些启发式算法,用于确定将网格放置在哪个层级以及根据室内还是室外、我们有什么样的东西、所在地的尺寸来进行偏置。但是它是级联网格 – 所以它有四个级联,每个级联的分辨率相同,但是每个级联依次覆盖更大的距离。

Digital Foundry: 关于透明度遮蔽,显然你们在水上有反射效果,GI则传播到透明表面并从中获取 – 但是对于玻璃呢?遮蔽是如何实现的?

Oleksandr Koshlo: 我们仍然使用立方体贴图。对于这些玻璃表面,我们仍然依赖于立方体贴图。还有一种局部折射,你可以在水中或者在完全透明的玻璃表面上看到,这是屏幕空间的。所以目前还不支持射线追踪的折射或半透明物体的反射。

此外,除了汤姆的完整视频,Oliver和Rich还讨论了《阿凡达》主机版在DF Direct Weekly中的情况,详情请查看DF Clips视频。

Digital Foundry: 在主机上,你们是否使用自己预构建的BVH进行加载?构建BVH的过程是如何的?

Oleksandr Koshlo: 我们在主机上有一个自定义的BVH解决方案。由于我们不依赖它们的API,我们事先在离线状态下为网格构建了底层BVH以获得更高的质量。然后我们为BVH构建了我们自己的解决方案,以便我们可以在CPU上构建顶层BVH – 而使用DXR和现有API的方式是将所有实例发送到GPU,然后GPU创建一个加速结构。我们非常依赖缓存,并且只重新构建已更改的内容。这样我们就可以在CPU上高效地构建顶层结构,并在GPU上节省一些时间。

Digital Foundry: 这非常有趣,通常这是在GPU的异步计算中完成的。那么GPU上的异步计算完成了什么工作?最终可能因平台而异,但我非常想知道有哪些工作是异步完成的。

Oleksandr Koshlo: 实际上有很多工作是异步完成的。我们经常使用异步计算。我们非常喜欢它。我们在PC上只使用DX12,所以实际上在使用异步方面没有平台差异。体积层完全在异步上运行;探针光线追踪和照明也是异步运行的。虽然g-buffer追踪部分在图形队列上运行,但探针追踪部分在异步上运行。GPU剔除也在异步计算上运行,还有其他一些较小的任务,所以工作量相当均衡。

Digital Foundry: 在PC上,使用DXR射线追踪API,你们有1.0和1.1内嵌变体。你们在PC上是如何做到的?

Oleksandr Koshlo: 我们使用的是1.1内嵌。这对我们来说非常重要,因为我们早早就决定射线追踪适用于我们,并且我们可以通过避免所有着色差异来使用它进行发布。因此DXR 1.1允许我们以与我们在主机上执行的方式非常相似的方式实现。基本上只是改变了指令。对于普通材料来说,这对我们来说肯定足够了。

Digital Foundry: 这就像每个对象一个材质,或者…?

Oleksandr Koshlo: 每个网格一个材质。经常我们的对象由一些网格组成,所以在对象内部仍然会有一些变化。

Digital Foundry: 那么,在主机上的模式有什么样的效果?它们是如何实施的?

Nikolay Stefanov: 我们支持PS5和Xbox Series X上的60fps“偏向性能”模式。玩家还可以选择“偏向画质”模式,该模式以30fps为目标。在这里我们会对一些方面进行一些提升,并在内部以更高的分辨率输出。在Series S上,我们的目标是30fps,没有60fps模式供该特定主机使用。

【我们的完整《阿凡达控制台技术破解》已由汤姆进行,详细介绍了图形和性能方面的模式比较,包括Series S的表现。】

Digital Foundry:过去,Snowdrop是为数不多的引擎之一,推动了时间上采样的普及,那么你们这次中采用的是什么技术呢?

Nikolay Stefanov:我们在主机上使用FSR进行升频和时域抗锯齿,与PC上一样。默认情况下,我想你可能已经注意到了FSR。在PC上,我们也支持DLSS。我们还在与英特尔合作,支持即将作为更新发布的最新版本的XeSS。

Digital Foundry:游戏在主机上使用动态分辨率缩放吗?我实际上不记得《分裂》是否使用了此功能?

Oleksandr Koshlo:《分裂》确实使用了动态分辨率缩放,我们在《阿凡达》中也使用了。

Nikolay Stefanov:这是赞美质量和赞美性能模式之间的一个差异之一。所以,在60帧性能模式下,我们允许内部分辨率下降更多。这是你将会看到的主要差异之一。

Digital Foundry:在PC上,分辨率缩放器旁边有一个与分辨率有关的选项,你能解释一下它的作用吗?

Nikolay Stefanov:是的,绝对可以。有一篇涉及此问题以及其他许多内容的深入分析文章…显存仪表,PC基准测试等等。它基本上控制着你以及升频质量。

【缩放基于当前显示分辨率。低于4K的分辨率会偏向于更高的渲染分辨率,4K时与固定缩放相同,超过4K时则偏向于更低的渲染分辨率】。

《阿凡达:潘多拉的边疆》在PC上以4K DLSS性能模式运行,使用超高设置,此时拍摄的照片中,育碧庞大还未公开隐藏的’不可得’设置。

Digital Foundry:我注意到一个事实,即植被密度非常高。你们是否利用了新的DX12功能和/或由RDNA引起的变化,比如基元着色或网格着色?

Oleksandr Koshlo:我们在主机上使用网格着色。因此,我们的世界在几何方面的高密度有两个因素产生影响。一个是GPU几何管道,这在《阿凡达》中是新功能,并且支持我们的过程化放置管道。这带来了许多几何实例,并且我们使用GPU去除用不到的实例,仅渲染屏幕上的内容。然后我们将几何划分为我们称为网格簇的部分,并使用原生硬件功能如基元着色和网格着色对其进行渲染。我们使用额外的剔除传递来丢弃不在屏幕上的网格。这些技术真正提高了几何渲染性能。

Digital Foundry:PC版中是否有网格着色路径?

Oleksandr Koshlo:没有,我们在某个时候决定不支持,因为这项技术很新,并且在支持各种不同的PC GPU和硬件方面存在一定的挑战。所以现在,我们选择了在主机上完全支持它的更简单路径。

Nikolay Stefanov:但在所有PC上,我们仍然使用基于GPU的管道进行剔除等。所以只是网格簇路径没有。

Digital Foundry:你能详细说明一下GPU驱动的管道以及它的工作原理吗?我记得我第一次听说这个技术是在Seb Aaltonen为《刺客信条:团结》做的演示中,它到底是怎样的?

Nikolay Stefanov:所以,正如你所说,世界细节密度是我们想要超越的方面,特别是潘多拉是电影的主角,对吧?我们首先开发了定义生物群系外观的放置系统。这些规则系统告诉我们当你靠近水时,有什么特定的植物生长在那里,当你有这样的树时,周围都是什么样的其他植被等等。这些操作几乎实时进行,因此您可以更改规则,然后世界会在几秒钟内重新生成。

这个项目有两个挑战。一个是与我们以前的游戏相比,我们有近十倍的细节。另一个挑战是我们需要以我们开发的远景系统展示这些细节。所以,我们唯一能处理这种类型细节的方式就是转向基于GPU的流水线-而且GPU流水线没有太复杂的东西。

基本上,它们所做的是,它们不再以每个模型为单位进行操作,而是操作大块的几何图形,即128×128米的区块。 GPU流水线的操作是先取整个区块,首先通过特定的路径对区块实例进行剔除,基本上就是说:“这个区块是否可见?”然后进行实例的单独剔除过程,包括特定模型部分的网状模块。

然后,这就为GPU构建了一个需要进行顶点着色处理的事物列表-顶点着色处理非常复杂,我必须说。你会对我们的技术艺术家在顶点着色器中做的事情感到惊讶。我们基本上将这些绘制到G缓冲区并对其进行灯光处理等等。但对于我们来说,保持顶点着色器的灵活性非常重要,因为它们用于游戏中的所有交互式植物,如你在游戏中看到的那些转动的、弯曲的以及黄色植物的移动方式。

Digital Foundry: 哦,是的,碰到的时候会蜷缩的那些奇怪的锥形植物。

Nikolay Stefanov: 事实上,所有这些都是在顶点着色器中完成的。如果你对所有物体都运行这些操作,性能就会下降。所以,为此提供网状模块支持非常重要。这大致就是我们剔除的工作原理。

Oleksandr Koshlo: 关于GPU实例剔除流水线,我们在资产方面没有任何区分。所以当一个资产被创建时,它不知道它是要经过程序放置然后通过GPU剔除,还是要手动放置并通过另一个系统处理,所以在这个方面一切都是透明的。

Nikolay Stefanov: 我们为这个项目做的另一件事是远景系统。所以基本上,我们有几个阶段。离你很近的东西的细节几何图形是完整的,最终从内存中加载出来。然后我们在第二个距离阶段切换到我们的影印体表示,这同样完全由GPU驱动,针对整个区块。影印体是标准的影印体,带有法线贴图,虽然我们也支持在其上进行阴影处理。然后,当你距离更远的时候,我们进入第三个阶段;甚至影印体也会被卸载,我们只留下超大物体的表示形式,如拱门、飘浮的岛屿等。同样,所有这些都由GPU驱动:剔除、渲染等等。

Digital Foundry: 根据你的描述,即使在PC上没有使用网状着色,能够运行这样的游戏我真是感到惊讶,所以即使没有进行优化,它可能也相当高效。

Oleksandr Koshlo: 说实话,让网状着色比非网状着色更快速的确是一个相当大的挑战。我在这方面花了很多时间,而且原始的光柱化确实非常快速,效果非常好。

Digital Foundry: 你谈到了基于规则的资产放置,但地形实际上是如何生成的呢?

Nikolay Stefanov: 所以对于这个项目,就像任何高质量的开放世界游戏一样,关键是确保你有一个良好的手动放置和计划好的内容比例-实际上你会有一个设计者坐下来决定关卡和地形的外观,然后留下细节由电脑进行放置,进行比人类更快的冲刷和模拟。

对于我们来说,世界是通过一些我们称之为关卡模板的东西实现的。以游戏中的家树为例。这是一个特定的关卡模板,内部有很多手动放置的细节,但也有艺术家手工设计的周围地形。我们的Snowdrop关卡编辑器允许我们将该关卡模板移动到世界的其他位置,这样手工制作的地形就与作为关卡基础的更大区块地形融合在一起。

通常我们的做法是这样的:我们有一个基础地形,由游戏设计师创建,通过使用过程性系统以及大量手工制作来引导玩家。我们有侵蚀系统,用于植物传播的反弹…除此之外,我们还放置关卡模板,其中一些是手动放置在特定位置上的,地形与其融合,所有内容都被涂上材质。我们还有特定的关卡模板,也是通过过程方式放置,或者在关卡中随机分布,以简化游戏设计师的工作,他们可能不想手动放置成千上万次的岩石。

从当前一代主机的角度看,《阿凡达》的画质。有趣的是,即使是Series S也可以产生出一种好看的体验,尽管该平台的分辨率和特效有所削减,并且画面在30帧每秒进行。

数字发现:我对世界的大小感到有点惊讶,因为我到达了家园之树,看了一下地图,发现“哦,我甚至还没有完成世界的四分之一。”

Nikolay Stefanov:我们有三个不同的区域。我想你还在第一个生物群系中。每个区域的大小都比《刺客信条2》中的地图要大一点。

数字发现:我在PC上特别注意到的一件事是,这是我多年来一直在谈论的一个问题。我感到非常伤心,我想知道关于PSO(渲染对象组合)的问题。我很好奇这个游戏在PC平台上的处理方式,因为我们在太多其他PC游戏中看到了卡顿的情况。

Nikolay Stefanov:我们基本上预先构建了PSO,并将其打包…我想PC平台上约有3GB的PSO,大概是这样。太疯狂了。

Oleksandr Koshlo:这只是很多变化的一部分。我们也以不同方式处理对象的加载。不知道我是否应该在这里展示所有的牌 [大家一起笑]。

Oleksandr Koshlo:游戏设计师在游戏中不应该遇到卡顿。如果需要进行PSO编译,那意味着该对象将稍后进行加载。我们将编译步骤视为加载对象的一部分。现实情况是,代码中可能会有导致PSO卡顿的错误,但我们会密切注意这一点。我们会在内部报告并修复。但这并不是常态。我们非常、非常重视这一点。

数字发现:我在配置文件中注意到的一个问题是列出了可变速率着色(VRS)-这款游戏实际上支持VRS吗?

Oleksandr Koshlo:是的,支持。我需要具体查看配置,但它是支持的。

数字发现:Xbox Series主机上有使用吗?

Nikolay Stefanov:我想没有。

Oleksandr Koshlo:我认为我们目前在Series主机上没有使用。

数字发现:您对这个项目的哪些部分感到特别自豪?

Nikolay Stefanov:我想要特别提到的是游戏的音频实现。这是我们共同非常自豪的一点。我们使用光线追踪进行声音传播。当声音发出器被遮挡或声音反射时,这些都是通过我们的光线追踪系统进行模拟。我真希望我们能有机会在明年的GDC上谈论它-这是一个非常酷的系统。

另一件我自豪的事情是PC基准测试。它有非常详细的图表,我认为你会觉得很有趣。我们的游戏中有调试标签,告诉我们光线追踪通道在GPU上花费了多少时间,G-buffer通道花费了多长时间,后处理通道花费了多长时间等等。还有一个详细页面,您可以在基准测试中单独查看这些信息。我们还支持基准测试的自动化,因此您可以通过命令行启动它,然后它会将这些详细信息存在CSV文件中。基准测试还会涉及到CPU的使用情况。所以它会告诉你我们处理代理、碰撞检测等等需要多长时间。所以,如果您喜欢统计数据和图表,我认为这个基准测试适合您。

Oleksandr Koshlo: 我认为总的来说,我为它们是如何一起完美呈现而感到自豪 – 而且我们成功地将它们全部压缩到了每秒60帧的主机中。我们的长期哲学一直是不要依赖某些“热门技术”。我们在这里使用光线追踪,但只针对我们关心的事物,只有那些能够在恰当的性能条件下极大提高视觉质量的事物。我们关心的是花少钱得到很大效果的东西。我们努力不仅仅做好难事,还要做好基本事务,确保一切都协调运行。我认为我们做到了。而且我真的希望你会喜欢这个结果。

Nikolay Stefanov: Alex,我有一个问题。你看了动态模糊吗?

Digital Foundry: [笑]看了。我确实看了动态模糊。它比预告片中的效果要好多了。[大家笑]

Digital Foundry: 这只是一些反馈。你介意增加一个动态模糊调节滑块吗?因为目前游戏只有一个二进制开关控制动态模糊。根据个人喜好,可以增加或减少效果。在高帧率下,很多动态模糊都消失了,而且有些人可能喜欢更平滑的效果,尤其是在这样一个有电影抱负的游戏中。

Nikolay Stefanov: 我认为这是个好主意。我们可以与设计人员讨论一下,看看我们以后能否实现这个功能。有些人真的很喜欢动态模糊。有趣的是,我们的创意总监Magnus Jansén是Digital Foundry的忠实粉丝,所以他一听到你们在谈论动态模糊,就立刻来找我们。

这部分采访中关于动态模糊的讨论提到了Alex在观看《阿凡达:潘多拉前线》预告片时的最初反应。

Digital Foundry: 作为评测的一部分,你们记录了CPU使用数据并向用户公开。你们如何充分利用多核CPU和多线程技术?因为这仍然是电脑游戏中一个很大的问题领域。

Nikolay Stefanov: 当然了,我们可以详细谈一下。在Snowdrop和《阿凡达》中,我们使用了一个称为任务图的东西。我们不像传统游戏只有一个主线程,而是将工作分割成有依赖关系的个别任务,这样我们就能更高效地利用多核CPU。实际上,如果你没有多核CPU,游戏的运行效果就不会很好。

我们的做法是利用除了一个留给操作系统之外的所有核心。然后根据负载在这些核心上运行一系列任务。Snowdrop的一个好处是,它给我们提供了灵活性来运行这种类型的任务。我们花了很多时间来打破任务之间的依赖关系,确保例如NPC可以并行更新,UI可以并行更新,物理也可以并行更新。所以希望你们会看到很好的CPU优化效果。

Digital Foundry: 我一下子就感觉到了。简单来说,你们支持3帧的FSR生成。希望以后你们也能支持XeSS。你们有考虑过DLSS的3帧生成吗?

Nikolay Stefanov: 我们目前没有具体的DLSS 3帧生成计划… 但是我们与Nvidia紧密合作,希望将来会有更多相关消息。

Digital Foundry: 在游戏中有一些能被破坏的植物。它们是如何实现的?

Nikolay Stefanov: 这是我们在《全境封锁》中使用的系统的延续。虽然大部分物体都支持某种形式的破坏,但最基本的破坏形式是切换到破坏版本的着色器。当你走近一个污染区域时,例如,你可以看到被破坏的植物,然后在你消灭基地后,自然环境会得到清理,植物又切换回原始的外观。

某些较大的植物支持所谓的“网格切割”,我认为其中大部分是“预先切割”的。在数字内容创建应用程序中,比如Maya或3DS Max,你可以定义它们的切割方式。当我们检测到碰撞时,我们从GPU驱动的管线中获取该特定的植物实例,并将其转换为更传统的CPU驱动对象,然后将其分割并销毁。然后我们对掉落出的碎片进行物理模拟。如果你做得太多,你可能会开始看到一些帧率下降。

数码派: 关于音频系统和光线追踪方面,光线追踪是在CPU上完成的吗?还是在GPU上使用硬件实现的?

Nikolay Stefanov: 是在GPU上进行的,如果有硬件支持的话。我们使用的是与系统的其他部分完全相同的光线追踪世界和光线追踪查询。

数码派: 这个音频系统的传播方式似乎非常逼真,做得很好。

Nikolay Stefanov: 是的,绝对没错。我认为你还会发现另一个有趣的地方是它也是互动的。所以如果你试图开枪,你会发现某些鸟的叫声会消失,因为它们害怕你。如果你用弓射击,这种情况就不会发生。这完全基于互动性。

作为技术总监,这是我一直犹豫不决的事情之一。作为技术总监,你希望对一个特定系统的野心有所限制。但是这一次音频团队必须在他们自己的野心中进行重新定义。他们做了很多工作。甚至有时候他们会在某些几何体上放置过程生成的种子,这样你就能听到风从不同资产基于的几何体中呼啸而过的声音,并且当暴风雨来临时,会有独特的特性,你会听到所有这些听起来像是在三维空间中传播的声音。

数码派: 地面上的地形相当细分。这是怎么做到的?

Oleksandr Koshlo: 这是在CPU上进行预细分的。所以我们只在需要的地方发送更详细的网格。

Nikolay Stefanov: 在地形方面,这一次我们并没有在技术上投入太多,因为很多时候地形完全被其他东西覆盖!

数码派: 是的,通常都是被覆盖的!我一直非常喜欢《全境封锁》中体积光照和粒子光照的渲染方式。在《阿凡达》中有什么变化吗?

Oleksandr Koshlo: 是的。在体积光方面,《全境封锁》系列中我们只有玩家周围和前方的体积。现在我们有了一种体积和射线追踪通过体积的方式,所以我们可以支持更大的距离;如果没有它,整个系统将彻底崩溃。我们现在还有体积云。我们通过雾和云进行一致的射线追踪。云也可以是近距离体积的一部分,因为我们现在可以进入其中,乘坐飞行坐骑。这是一个统一的系统。

Nikolay Stefanov: 正如Sasha所说,你现在实际上可以在云层上方飞行。这会导致一些有趣的情况,在地面上,例如可能有一场雷暴,但现在你可以通过体积射线追踪的云层穿越,然后真正飞到云层上方。看起来很酷。

在粒子方面,它们从光线追踪中获得光照,我们现在实际上完全支持GPU粒子。在《全境封锁》系列中,如果我没记错的话,我们用GPU粒子来制作雪和雨,但现在它们完全与Snowdrop的节点图集成。因此,绝大多数粒子效果都通过GPU进行,包括碰撞检测和所有光照。所以这是我们所做的重要事情之一。所有这些旋转的小物体,你看到的那些只是GPU粒子。

数码派: 这里有很多信息需要消化。非常感谢,Sasha。非常感谢,Nikolay。感谢你们的时间。希望将来还能再次与你们交流。希望能有一场关于你们所做的一切的GDC演讲。