图形重塑:光线追踪、人工智能和可着色编程所带来的全新游戏体验方式

作者 Andrew Burnes 开启 2018年9月27日 | GeForce RTX GPUs Featured Stories Advanced Shading VRS Ray Tracing NVIDIA RTX Turing DLSS

GeForce RTX 显卡是有史以来速度最快的显卡,能够在当今游戏环境中提供 4K 60 FPS 体验。此外,这款显卡中还融入了前瞻性新技术,可在游戏行业产生颠覆性效果,提高视觉保真度,引入逼真图案,提供新体验并进一步提高性能。

从广义上讲,这些技术由三大支柱支撑:NVIDIA RTX 光线追踪、人工智能和可着色编程。下面,我们将向您介绍通过新 Turing 架构实现的所有游戏相关性能,并解释它们如何改进当今的行业标准技术。

实时光线追踪技术在游戏中的应用

几十年来,光线追踪一直是图形技术领域追逐的梦想,它能够以独特的方式在屏幕上呈现各种栩栩如生的场景。该技术的唯一的问题在于性能:每帧需要数百万次的光线追踪操作方可呈现高品质效果,且每次光线追踪操作都需要计算被击中的内容及其对周围场景的影响。

这些计算给 CPU 带来沉重的负担,需要投入整个服务器集群的处理能力才能营造出复杂的特效和虚拟世界,就像您每天在电视节目和电影中看到的各种景象(在最优质的作品中,简短片段和场景可能需要花费数天时间才能完成渲染)。

不过,现在我们发明了 GPU 提速的 NVIDIA RTX 平台,并推出了配置专用 RT 核心的 GeForce RTX 和 Quadro RTX GPU,大大提高了好莱坞光线追踪 VFX 镜头和世界的创作速度。但在游戏领域则完全不同:游戏是实时进行的,每秒至少 30 帧,且玩家会随时变换摄像头或屏幕画面。

因此需要另想办法,既要利用光线追踪实现出色的保真度,又不会导致游戏运行过慢,无法顺畅进行。我们的解决方案是采用混合渲染,通过对选择的效果进行光线追踪,来增加逼真照明、暗影和反射,营造出高保真栅格化世界。

光线追踪反射

光线追踪反射可展现 NVIDIA RTX 的效果,从而让玩家得以向朋友展示其新款 GeForce RTX GPU 的非凡技能。撰写本文时,光线追踪反射已用于“神力科莎:竞技版 (Assetto Corsa Competizione)”“原子之心 (Atomic Heart)”“战地风云5 (Battlefield V)”“控制 (Control)”“机甲战士 5:雇佣兵 (Mechwarrior 5: Mercenaries)”以及众多其他即将推出的游戏中。在每款游戏中,光线追踪反射均将大幅提高图像质量和整体游戏的沉浸感。

在此之前,最好的反射技术应当是结合静态环境地图的屏幕空间反射 (SSR),但任何开发人员,无论多么优秀,几乎都无法克服其局限性。

例如,屏幕空间反射只能显示屏幕上所示物体的反射(这些物体在框架其他部分已经可见)。任何屏幕以外(包括摄像机后)也应反射的事物,实际上是以低分辨率立方体贴图伪造的,这是一种在表面应用的预生成反射图像(如开放世界动作游戏中的摩天大楼窗口)。

使用立方体贴图的局限性在于其仅能体现从场景中单个点观察的反射环境,因此用于大型反射物体便会失真(此外,玩家经常会看到相同的反射“烘焙”到不同位置的多个窗口中,而在玩家转身之时,却发现实际场景截然不同)。虽然可以借助一些技术根据周围世界的景象来定期更新立方体贴图,但始终无法克服技术本身存在的问题,因此仍然难以展示现实中在摄像头或玩家后面移动的人、车辆等移动效果。

SSR 的另一主要问题在于渲染的反射无法显示被遮挡的细节,就像如果一个大物体位于另一个大物体之后,现实中是可以通过反射看见的。此外,当玩家移动或转动摄像头时,或当玩家过于靠近被反射表面或物体时,也存在反射消失的问题,这是因为要反射的细节超出了屏幕范围。

集成 NVIDIA RTX 光线追踪技术可解决以上所有及更多问题,进而呈现高分辨率、全场景且能够实时反射玩家或摄像头前后上下所有细节的游戏效果。

为实现这种新型超高质量反射,“光线”从玩家摄像头的可见表面来“投射”。当光线与物体和表面相交时,可利用相交处的细节与来自其他光线和相交点的许多其他信息共同创建反射。

但为了产生逼真效果,还必须考虑每个物体和表面的属性,确定其能否反射光线,是否会吸收光线,是粗糙还是光滑,是否透明等。

之后,如果开发人员想要在反射中显示反射,则可根据最初击中目标的属性通过额外“反弹”将光线发射至新的方向。当这些光线到达新游戏元素时,相交点信息随后用于反射中,呈现的场景也会随之更新。

最后,利用菲涅耳效应可呈现物体和表面的自然反射效果(现实中,玻璃球的边缘可 100% 反射光线,而球体中心仅反射很少一部分光线)。如果不应用这一效应,则每次反射不会自然照亮所有点。

通过 GeForce RTX 显卡可看到的“战地风云5 (Battlefield V)”中两个令人难以置信的反射示例

为了在整个场景中营造出逼真的实时反射效果,整个过程每毫秒需要执行数百万次;并且只有借助专门针对这一任务打造的 GeForce RTX 实时光线追踪单元(RT 核心),才能以平稳的传输帧率实现这一目标(更多信息请参阅Turing 白皮书第 30 页)。这一技术改进令人赞叹,提高了所有其他游戏的保真度标准。

更多有关 NVIDIA RTX 实时光线追踪反射截屏、视频和预告片的信息请查阅以下游戏相关文章:“神力科莎:竞技版 (Assetto Corsa Competizione)”“原子之心 (Atomic Heart)”“战地风云5 (Battlefield V)”“控制 (Control)”“机甲战士 5:雇佣兵 (Mechwarrior 5: Mercenaries)”

光线追踪漫反射全局照明

借助 GeForce RTX GPU 的实时光线追踪功能,我们还可以更加准确地模拟场景中的光线反射效果,开发人员也得以将光线追踪漫反射全局照明应用到游戏当中。

玩家可能对“全局照明”并不熟悉,该术语是指场景中所有光线交互的计算过程,包括直射光在从一个表面反射到另一个表面的过程中所产生的间接光照。在此之前,在上述技术行不通的情形下,通常通过预先计算的光照贴图、基于图像的光线探测器、球面谐波、反射暗影贴图和光线的艺术化排布形成强制照明来实现全局照明。

这些技术存在几个缺点,其中最大的缺点在于动态照明无法将光线反射或照射至光线所及之外区域。

例如,明亮光线透过窗户射入黑暗房间的情形。如果使用传统技术,光线所及的所有区域都会被照亮,但照亮的区域本身无法反射光线,无法照亮周边的游戏元素,不符合现实情况。

利用光线追踪,我们便能够更加精确地模拟场景中由一个或多个间接表面反射产生的动态间接漫反射光照,让开发人员得以利用更加逼真的间接照明来制作动态场景,间接照明会随着游戏中照明的变化和事件的发生而实时更新变化。换句话说,光线反射自然发生,自然照亮周围细节。如果太阳移动或打开遮光帘,则房间光照会与在现实中一样发生变化,玩家看到的是在全新光线照射下的房间效果。

以下是“地铁:离去 (Metro: Exodus)”中的示例,该游戏将于 2019 年发布:

为了尽可能实现优质的光线追踪全局照明,一些开发人员利用一个名为“烘焙”的过程,借此计算光线对场景中静态对象的影响并将其写入纹理当中,覆盖在游戏的几何体上。对于光照固定、具有静态几何体的游戏,或一天中的固定时间段应用的场景,使用效果非常出色,且无需渲染全局照明效果便可改善游戏性能。但烘焙照明无法处理世界上能够对照明产生巨大影响的动态变化,就像在上面的“地铁:离去(Metro: Exodus)”视频中打开遮光帘的情形。

此外,烘焙过程比较耗时,每次编辑游戏架构均需重新运行,且烘焙照明迭代可能会对内容的创建过程造成很大拖累。

现在,开发者可通过 NVIDIA RTX 和光线追踪来即时预览他们的烘焙照明与任何更新,大大加快了开发速度,并为开发人员提供了更多机会来迭代和微调,以获得最大保真度。当他们获得了自己所满意的效果时,便可关闭光线追踪并为旧 GPU 和其他平台提供烘焙照明。

Remedy Entertainment 的《控制 (Control)》抢先看,其中应用了经过改良的光线追踪全局照明技术

借助实时光线追踪漫反射全局照明,开发人员现在首次能够打造出照明自然,并且可动态响应光照变化与几何变化的逼真场景。这一点在“控制 (Control)” 中尤为显著,其中形态变化水平从根本上影响了场景照明,彻底改变了其呈现效果。与光线追踪反射的情况类似,这一技术对游戏外观和感受的影响非常大,以至于玩家会希望每款游戏都能有 NVIDIA RTX 效果。

光线追踪漫反射全局照明在动作游戏中的更多截屏和视频详见我们的以下游戏相关文章:“控制 (Control)”“战栗深隧:流亡 (Metro: Exodus)”

光线追踪环境光遮蔽

环境光遮蔽 (AO) 是一项用于添加接触暗影的技术,如遮挡岩石底部周围物体或表面的环境光。此项技术可避免物体浮在表面上,让场景看起来更贴合地面,更逼真。

在此之前,最好的环境光遮蔽技术首选方案要数我们自己的 HBAO+ ,与 SSAO 相比,无论在性能还是保真度上都有大幅提高。但终究这项技术还是受制于屏幕空间,无法呈现屏幕外的细节与隐藏细节。

而有了光线追踪环境光遮蔽 (RTAO),质量和精度都得到大幅提高,屏幕外细节以及一些隐藏细节(如桌下)也可以呈现了,场景更加逼真。

地铁:离去 (Metro: Exodus)”视频中还包含了一些实时光线追踪环境光遮蔽示例

借助光线追踪,我们能进一步改进这一关键效果,让应用这一技术的每款游戏的各部分细节都能得到强化。这项技术在动作游戏中的更多示例详见我们的以下游戏相关文章:“神力科莎:竞技版 (Assetto Corsa Competizione)”“原子之心 (Atomic Heart)”“机甲战士 5:雇佣兵 (Mechwarrior 5: Mercenaries)”“地铁:离去 (Metro: Exodus)”

光线追踪阴影

近年来,视频游戏阴影已经走过了很长一段道路,增加了很多功能,让他们得以更加接近复制现实阴影的水平。在实时光线追踪出现之前,我们的自有混合截头锥体追踪暗影 (HFTS) 技术最为逼真,但最终该技术与所有其他光栅化技术都只属于一系列巧妙编程技巧,试图模仿暗影的呈现效果。

如果没有 HFTS,开发人员需要仔细平衡其传统暗影贴图的属性,以便最大限度提高精度、细节和视图距离,同时避免暗影混叠、阴影瑕疵(自我阴影错误)和阴影分离(无法与阴影投射物体的底部完全结合,无法贴合地面)。

有了光线追踪,这些问题已经迎刃而解。相反,我们在场景中投射了数百万条光线,来逼真地呈现阻挡光线的人物、物体和植物,首次产生了与现实无异的阴影。而且,除增加精准阴影外,我们还可为大型复杂交互、实时半透明阴影投射和大量其他技术提供支持,其细节水平远远超出可实现或之前所见效果,这对我们来说也是第一次。

特别是光线追踪让开发人员得以借助区域光源,产生更大的半影和物理上合理的接触硬化,使得越靠近投射物体,阴影越强烈。这一技术的好处在“古墓丽影:暗影 (Shadow of the Tomb Raider)”中可以清楚地看到,这也是首批应用光线追踪阴影的游戏之一:

实时光线追踪即将应用于游戏

有了光线追踪,反射、阴影、环境光遮蔽和全局照明才能呈现出最佳效果。现在,我们终于能将这些技术应用到游戏中,呈献给游戏玩家前所未有的保真度、真实感和沉浸感。因此,GeForce RTX 显卡上的实时光线追踪真正实现了图形重塑,用基于现实世界光照行为的真实计算来取代当前技术的技巧与近似性。

除此之外,玩家还可在今年晚些时候通过在GeForce RTX 显卡上畅玩 NVIDIA RTX 游戏来亲身感受。

人工智能加速功能在游戏中的应用

除了驱动 NVIDIA RTX 光线追踪的“RT 核心”外,我们的新型 GeForce RTX 显卡还具有“Tensor Core”功能,用于人工智能任务(技术细节详见Turing 白皮书第 21 页)。

深度学习超级采样 (DLSS)

在过去几年里,NVIDIA 创始人兼首席执行官黄仁勋先生非常乐于展示深度学习神经网络Demo,其中人工智能将决定宠物照片是显示猫还是狗。随着获得的图像越来越多,做出的正确选择越来越多,机器将表现的越来越好,最终将实现每次都能给出正确答案的水平。

利用该基础进行机器学习,我们已经创建出一种新型渲染技术,名为深度学习超级采样 (DLSS)。这款技术能够在很大程度上提升性能并改进图像品质,与常用的随机采样抗锯齿 (TAA) 技术相比,该技术在抗锯齿方面具有更好的时间稳定性与图像清晰度。

为了发挥作用,有几个步骤要做,每一步都利用了我们的尖端技术,以及我们在深度学习和人工智能方面的专业知识。

首先,我们展示了一个由神经网络从每个的 DLSS 游戏中截获数千个屏幕,最高可达 64 倍的超级采样 (64xSS),同时用未采用抗锯齿的技术来截获另一组图像。然后,我们对网络下达镜头审查与对比的任务,以便了解如何在不投入巨大性能成本的情况下尽可能接近 64xSS 的品质。

随着网络不断重复这一过程,其算法得到微调,并最终学会自动化该过程,实现了接近 64xSS 品质的抗锯齿,同时避免了 TAA 遇到的相关问题,如屏幕模糊、动作模糊、重影和透明胶片伪像。

当然,并不是所有人都拥有超级计算机,因此我们将演练过的数据从我们的神经网络打包成一个小文件,该文件可包含在 Game Ready 驱动程序中,也可通过 GeForce Experience 传输至玩家系统。这样一来,玩家的 GeForce RTX GPU 便能够自动知晓如何为每个 DLSS 游戏呈现最佳渲染,确保每次都能展现最佳效果。

最后,我们借助深度学习超级采样的卓越 64xSS-esque 品质和我们的高质量滤镜来降低游戏的内部渲染分辨率。此举可大大提高游戏性能,且不会对图像质量造成明显的负面影响,就像您在“最终幻想 XV:Windows 版 (Final Fantasy XV: Windows Edition)” DLSS 基准中看到的那样。

结合 GeForce RTX 显卡已改进的光栅化性能,与 10 系列 Pascal 架构显卡相比,其帧率提高了 2 倍,达到 4K。凭借这种额外性能,玩家可以调高设置,同时依然享受 60 FPS 或更高的超级流畅体验,获得终极游戏体验。

撰写本文之时,已有 25 款游戏应用了 DLSS,其中包括一些热门游戏,如“最终幻想 XV:Windows 版 (Final Fantasy XV: Windows Edition)”和 PUBG:

  • “方舟:生存进化 (Ark: Survival Evolved)”(来自 Studio Wildcard)
  • “原子之心 (Atomic Heart)”(来自 Mundfish)
  • “暗黑血统 3 (Darksiders III)”(来自 Gunfire Games/THQ Nordic)
  • “无畏 (Dauntless)”(来自 Phoenix Labs)
  • “飞向月球:财富 (Deliver Us The Moon: Fortuna)”(来自 KeokeN Interactive)
  • “恐惧狼群 (Fear The Wolves)”(来自 Vostok Games/Focus Home Interactive)
  • “最终幻想 XV:Windows 版 (Final Fantasy XV: Windows Edition)”(来自 Square Enix)
  • “破碎之地 (Fractured Lands)”(来自 Unbroken Studios)
  • “地狱之刃:塞娜的献祭 (Hellblade: Senua's Sacrifice)”(来自 Ninja Theory)
  • “杀手 2 (Hitman 2)”(来自 IO Interactive/Warner Bros)
  • “奈恩群岛 (Islands of Nyne)”(来自 Define Human Studios)
  • “Justice”(来自 NetEase)
  • “剑网 3 (JX3)”(来自金山软件公司)
  • “KINETIK”(来自 Hero Machine Studios)
  • “机甲战士 5:雇佣兵 (Mechwarrior 5: Mercenaries)”(来自 Piranha Games)
  • “前哨零 (Outpost Zero)”(来自 Symmetric Games/tinyBuild Games)
  • “超杀:行尸走肉 (Overkill's The Walking Dead)”(来自 Overkill Software/Starbreeze Studios)
  • “绝地求生 (PlayerUnknown’s Battlegrounds)”(来自 PUBG Corp.)
  • “遗迹:灰烬重生 (Remnant: From the Ashes)”(来自 Arc Games)
  • “人渣 (SCUM)”(来自 Gamepires/Devolver Digital)
  • “英雄萨姆 4:星球恶棍 (Serious Sam 4: Planet Badass)” (来自 Croteam/Devolver Digital)
  • “古墓丽影:暗影 (Shadow of the Tomb Raider)”(来自 Square Enix/Eidos-Montréal/Crystal Dynamics/Nixxes)
  • “风暴潜者 (Stormdivers)”(来自 Housemarque)
  • “锻造竞技场 (The Forge Arena)”(来自 Freezing Raccoon Studios)
  • “少数幸运儿 (We Happy Few)”(来自 Compulsion Games/Gearbox)

敬请关注 GeForce.cn,了解其他应用 DLSS 的新游戏以及 DLSS 在这些游戏中发布的新闻。

AI Up-Res

放大图片会拉伸现有像素,从而有损细节和清晰度。借助人工智能和一个名为“AI Up-Res”的过程,我们能够在智能放置新数据之前通过解析图像内容来创建新像素。此举能够进一步强化放大效果,合理保留景深效果与其他艺术处理。

NVIDIA Ansel 中,正在利用这项技术,可为 200 款游戏截获分辨率更高的游戏内照片。

更多信息,请直接查看我们的GeForce Experience 专题文章

高级着色

着色器是一个在 GPU 上运行的程序,控制着渲染过程的各个方面:如何安排顶点与当前摄像机视角的相对位置;随着观察者视角的靠近,较大物体如何分解成较小的三角形;或如何在物体表面给定点反射光线。所有这些都为开发人员提供了必要控制,以产生今天在游戏中看到的惊人视觉效果。

NVIDIA 于 2001 年推出了世界首款可编程的 GeForce 3 GPU,开创了可编程着色。在过去 17 年里,我们目睹了着色技术的惊人发展速度,由此开发出越来越丰富、越来越细化和越来越逼真的游戏。

Turing 架构代表着所有这些发展之巅峰,引入了四种新型着色技术,将解锁创新型渲染方法,促使游戏中实时图形的视觉保真度和性能更上一层楼。

可变速率着色

随着 4K 显示器和 VR 显示器的广泛应用,开发人员在如何利用 GPU 单元为屏幕像素着色上,需要更多控制权。如在 VR 头盔中,视场周边像素在着色上无需达到图像中心像素的水平。通过类似方式,具有平滑变化纹理或柔和漫射照明的表面可重复使用相邻像素之间的着色信息,而无需从头开始为每个像素着色。

另一个例子是场景中快速移动的物体:一个因移动而模糊的汽车在屏幕上呼啸而过时,无需对每个像素都着色,因其移动过快,导致人眼无法清楚地感知到所有细节和效果。

为解决这些问题,Turing 采用了名为可变速率着色(简称 VRS)的高级像素着色器调度技术。借助可变速率着色,开发人员得以完全控制屏幕上不同区域正在执行的着色工作量。

VR 显示屏中心的物体,或显示器上的高清表面可实现全速率着色,甚至可对每个像素进行多次着色,同时 VR 头盔中的镜头失真像素,或与屏幕上的快速移动物体相对应的像素,均可通过低速率着色,呈现单一着色计算的多像素共享结果。

因此,游戏可以更智能地分配着色工作,并为场景中的重要物体分配更多着色时间,有效“借用”无需重点着色物体的着色资源。

通过可变速率着色,我们还开发了移动自适应着色 (MAS) 技术、内容自适应着色 (CAS) 技术和注视点渲染技术 (Foveated Rendering),这三种技术有助于以特定方式提高性能。

移动自适应着色 (MAS) 技术

基于屏幕上特定区域存在的移动程度来调整着色率是可变速率着色的最有效应用之一。这一技术称为移动自适应着色 (MAS) 技术。

移动自适应着色技术的工作原理是先要计算屏幕上的物体移动情况。例如,在第三人赛车游戏中,赛车大部分时间处于静态,因此必须通过全速率着色来保留重要细节。与此相反,屏幕周边的物体,如道路标志或车道标记,会在接近摄像头时移动得非常快,因此可降低着色频率。

没有可变速率着色,每个像素都要单独着色(一对一)。有了可变速率着色,开发人员在每个 16x16 的像素区域最多可拥有七个着色选择,包括让 4 个像素 (2 x 2),或 16 个像素 (4 x 4) 或非方形像素(1 x 2 或 2 x 4)呈现同一着色效果。屏幕截图上的色彩覆盖展现了可变速率着色的可能应用,也许可对赛车进行全速率着色(蓝色区域),而对赛车周围的区域,按照每 4 个像素着色一次(绿色),对因移动而被模糊化的左右两侧道路按照每 8 个像素着色一次(黄色)的频率来着色。

基于此移动信息,游戏会计算屏幕空间中每个区域的适当着色率,并将其反馈给控制像素着色器调度的 Turing 可变速率着色硬件。从现在开始,游戏引擎的其余部分在很大程度上可无需知晓引擎盖下发生的事情,让该技术能相对容易的融入到现有游戏中。当然,还要在不对图像质量产生易察觉影响的情况下,为玩家提高游戏性能。

内容自适应着色 (CAS) 技术

通过内容自适应着色技术,我们可基于诸如空间和时间颜色连贯性等因素来降低着色率。换句话说,在细节相对较少,帧与帧之间保持不变的区域,如天空体和墙壁,可连续按侦降低着色率。

在下面的示例中,动画控制面板周围静态细节的着色率降低了,性能却提高了:

为进一步提高性能,开发人员还可同时应用移动自适应着色与内容自适应着色技术。

注视点渲染技术 (Foveated Rendering)

可变速率着色的第三个应用是注视点渲染技术,基于玩家在 VR 中使用眼动追踪技术所看到的内容,或 Tobii 4C 之类的桌面监视器眼动追踪仪来调整着色率。

人眼感知的分辨率取决于视角,而注视点渲染技术正是以此类观察为基础。我们对视野中心物体的视觉分辨率最高,而对外围物体的视觉分辨率很低。因此,只要明确了观众的眼睛位置,即可对外围进行低速率着色,而对视野中心进行高速率着色,以便始终保持最高的图像质量。

多视图渲染

Pascal 架构引入了单通道立体图像技术,这是一项在简单向左或向右偏移几何体位置之前,通过仅为头盔两个显示器提供一次几何体来提高 VR 性能的技术,不会单独渲染每只眼睛。

借助 Turing 架构的多视图渲染 (MVR),我们现在最多可渲染四个视图,这些视图可置于场景中任意位置。对于游戏玩家来说,这为发散型(非共面)超宽环绕式极端视野头盔打开了大门,高分辨率设置在左眼和右眼采用了屏幕堆叠技术。这项技术还可为需要综合考虑多个视点的全息显示屏进行加速渲染。

在非 VR 场景中,可使用多视图渲染来加速渲染多个暗影贴图,让开发人员得以生成更清晰,更高分辨率的暗影(在不使用光线追踪情况下)。

网格着色 (Mesh Shading)

现实世界中,视觉场景丰富,几何结构复杂,尤其是室外场景,组成元素甚至超过数十万个(岩石,树木,树叶等)。

如今的图形管线,包括顶点、曲面细分和几何着色器,在渲染单个物体的各个细节方面做的非常好,但在尝试复制现实世界细节时仍具有局限性。特别是,每个物体都需要从 CPU 中调用独特绘图,着色器模型是一个逐线程模型,限制了可使用的算法类型。

诸如此类的真实场景中有太多独特的复杂对象,要通过如今的图形管线来实时渲染。

高效的几何处理是实时计算机图形学的一大基石,NVIDIA 在这方面有着悠久的创新历史:我们的首个 GeForce 256 GPU 为执行这项计算成本高昂的任务卸载了 CPU;GeForce 3 是全球首款可编程的 GPU,为开发人员提供了前所未有的几何处理控制能力;Fermi 架构引入了曲面细分技术,这是一项胶片常用技术,旨在以最精细尺度来表现几何细节。

现在,随着 VR、光线追踪和复杂游戏追逐超现实主义的出现,人们对更精细几何保真度的需求比以往任何时候都要高。为满足人们在更高效几何处理方面不断提出的更高要求,Turing 架构引入了网格着色 (Mesh Shading),这是一种全新的几何编程模型,将计算着色器的灵活性与硬件调度图形管线的效率相结合。最重要的是,网格着色是一项新技术,其更加灵活的模型让开发者得以通过更高效的算法来消除 CPU 的绘图调用瓶颈,从而生成三角形。

有了网格着色,开发者无需再考虑处理单个顶点或单个基元的问题。相反,他们可利用新编程模型的强大功能,其中一组硬件调度线程可协同计算出一个比他们自行独立执行计算更有效的结果。

例如,通常三个三角形会共享一个顶点。为了确定给定三角形是否可见,游戏引擎必须在各个三角形的顶点处执行一些计算并组合结果。在传统管线中,每个三角形均需单独处理,这样一来,共享顶点则被多次重复处理。

网眼着色管线与传统管线对比

使用网格着色,开发人员可进行计算设计,让每个顶点部分仅执行一次计算,然后将该顶点的计算结果在所有相关三角形之间共享。

网格着色的另一好处在于其支持更丰富的几何体精化操作。通过曲面细分,给定的补丁或三角形可按照固定模式分解成更小的三角形。通过网格着色,开发人员可对精化方式实施完全控制:如对硬件进行编程,从简单描述树干与树枝的位置,到生成一颗完整的树,这棵树具备树皮和树叶等具体细节。

简而言之,借助网格着色可描绘极为精细的世界,一个以前未曾见过的世界。想想植被和灌木丛中的细节,杂乱、泥土和其他小细节,为了让游戏场景看起来远不像“合成的效果”,即接近我们所看到的真实世界,这些细节至关重要。

为了演示,我们创建了“小行星的细节层次 (LoD)”小样,该小样展示了网格着色在同时渲染数十万个小行星时如何显著提高性能和图像质量的。

您可能不熟悉 LoD,实际上几乎所有游戏都使用了这项技术,旨在根据物体与玩家摄像头之间的距离来调整物体的显现质量。以一棵树为例:我们完全没有必要渲染玩家看不到的远距离树叶和树枝,这时,树的细节会被降低至树的整体尺寸和形状,保持性能并为游戏提供资源,以便渲染临近树木,以获得最大保真度。在整个游戏期间,此过程适用于屏幕上的各个模型与物体,因此很容易想象网格着色在提高图像质量和性能方面做出了哪些贡献。

在“小行星”小样中,网格着色器动态调整了多达 350,000 个独立小行星的细节等级,以保持子像素的几何细节,达到了通过其他方式无法实现的性能水平。

在传统渲染中,LoD 管理占用大量 CPU,导致管线渲染出现巨大瓶颈。有了网格着色,动态 LoD 管理在 GPU 上可实现自主运行。在小样中,用户可打开或关闭网格着色的动态 LoD 系统,只要启用,便会显示出极佳的图像质量与性能。

下面的交互式对比中展示了“小行星”小样的线框渲染模式,玩家可清晰地看到用了更高 LOD 技术的图像在品质上的改进(注意,未使用曲面细分)。

小行星 NVIDIA 网格着色小样交互对比

通过可编程的网格着色,为覆盖屏幕上的所有必要像素,GPU 可动态减少和剔除玩家视野中三角形数量,从数万亿个减少至只有几百万个。通过有效应用这些简单技术,我们能显著提高性能,同时在最为重要的地方大幅提高图像品质:在靠近玩家视角的区域。

有了这些好处,网格着色可创建大型详尽场景,不同于过往体验。

纹理空间着色

如今,几乎所有的游戏都会从零开始渲染新帧,这意味着这些游戏不会使用该帧之前的任何计算(除非使用随机采样抗锯齿)。但在大部分游戏中,就像在现实世界中一样,帧与帧之间的变化相对较小。如果看向窗外,玩家可能会看到树木在风中摇曳,行人走过窗口,鸟儿在远处飞翔。但绝大部分场景都是“静态” 或固定不变的。主要变化在于玩家的视角。

现在,随着玩家的视角发生改变,所看到的一些物体的外观实际上也会发生改变,特别是有光泽或闪光的物体。但在玩家移动头部时,大多数物体的外观其实只会发生很小的变化,因此,重新一帧一帧地计算构成这些物体相同的精确颜色会造成 GPU 宝贵单元的浪费。对这些物体以较低帧率(如每三帧或更低)来着色,和重复使用过去算过的物体颜色(或者可能还指“纹理元素”)则更为有效。这种工作重用概念在光线追踪中尤为重要,特别是在全局照明的情况下,这是表明缓慢变化和昂贵着色计算的一个常用示例。

这项技术又称纹理空间着色,因为计算并没有在屏幕空间逐帧(即从游戏者的角度)进行,而是在纹理空间通过不同着色率来计算的(主要从物体本身视角来看)。为什么是纹理空间?因为当今游戏中的所有物体均有纹理,且这些纹理独立于玩家视角,使其成为存储着色物体的理想选择,并得以从一帧“搬至”另一帧。

此项也可有效用于 VR:因为我们的眼睛相当靠近,一只眼能够看到的绝大部分物体也会被另一只眼看到。主要区别不在于这些物体的着色(如通过左眼看到的黄色铅笔,与通过右眼看到的黄色铅笔在着色上完全相同),而在于物体的方向。这样一来,借助纹理空间着色,玩家便可“借用”一只眼的着色计算,并将其用于另一只眼,从而将着色工作量减半。如果玩家表现受制于游戏中的像素着色,则理论上纹理空间着色可让帧率加倍。

借助纹理空间着色,游戏引擎不会立即为所有光栅化像素着色。相反,游戏引擎会首先识别光栅化像素所引用的纹素。此操作非常类似于纹理单元在针对给定纹理操作找到所需纹理元素时会执行的操作。稍后会让这组纹理元素排队等候着色。请注意,在此过程中,相同纹素可能会被多个像素所引用,但为了提高效率,我们当然不希望纹理着色出现冗余。因此,游戏引擎必须执行所谓的删除重复着色请求,隔离出唯一可引用的纹理元素,并确保每个纹理元素仅被着一次色。

一旦找到该组唯一可引用的纹理元素,游戏便会针对这些纹理元素进行着色,并将结果存储在相应纹理中以便后续重复利用。这与像素着色类似,不同之处在于着色对象不是屏幕上的像素,而是纹理中的纹理元素。

最后,所计算的纹理元素可用于计算与之对应像素的颜色,与今天使用的静态纹理完全相同。这一步通常价格低廉,因其仅执行单个纹理操作。

而寻找可见纹理元素组并隔离唯一纹理元素在计算方面比较昂贵。因此,应用程序过去承担不起提供纹理空间着色的成本。Turing 架构通过为这一关键步骤引入硬件加速措施来解决这一问题:Turing 的纹理单元现在可直接向着色器提供纹理元素地址信息,而新数据并行内联函数也促使过程中的删除重复步骤非常有效。

尽管纹理空间着色可能看起来非常简单,且合乎逻辑,但因为一些“陷阱”的存在,导致这一技术没能成为主流。

首先,现代游戏对很多对象都进行了重复利用,包括纹理。如果游戏中出现森林,那么很可能很难保证每个树叶都有其独特纹理。很有可能所有树叶均来自同一小组树叶模型和纹理。这些物体不适用于纹理空间着色,因为所有可见对象都必须具有自己的纹理,不允许共享!想象一下,如果玩家没有强制执行此项操作,树上的所有树叶继续共享相同的纹理,然后如果您用手将其中一个放入阴影中,会发生什么。树上的所有树叶都会同时进入阴影。所以,这是开发人员首先需要解决的问题,以确保所有物体都有其自己的纹理,可独立于所有其他物体,单独着色。

因此,纹理空间着色需要对游戏引擎的构建方式彻底重新思考,但只要完成这一操作,便可塑造无限可能,一个全新的渲染方式将会开启,同时可基于光线追踪和光栅化的优势,通过高帧率生成照片般逼真的图像,且无需做出任何妥协。Turing 架构对纹理空间着色的硬件支持让这种混合方法最终得以投入使用。

下一代游戏图形重塑

NVIDIA GeForce RTX 显卡提供极致 PC 游戏体验。RTX 显卡采用新型 NVIDIA Turing GPU 架构和革命性的 RTX 平台,集实时光线追踪、人工智能和可编程着色技术于一体。这是一种全新的游戏体验方式。

有关上述 GeForce RTX 游戏颠覆性技术在游戏中应用的新闻,敬请关注 GeForce.cn