科普 什么是RTX全局照明

2019-10-19 来源:九辅电脑

特效解析

下面我们来看一个RTX GI带来的图像质量的例子。这些图像是基于GeForce RTX 2080 Ti,以每秒90帧的速度进行的1080p渲染。RTX GI的渲染成本为1毫秒/帧,其中包括层次包围盒(BVH)更新、光线投射、光线阴影、以及延迟着色期间在屏幕空间中的聚集。

DDGI主要是围绕漫射照明,也能加速非常粗糙的二次反射的光面全局照明。此外,本文还介绍了如何将可实现平滑光面照明的光线追踪操作与RTX GI相结合,以提高各自的光线追踪吞吐量。在该方案中,光面GI成本额外增加了2毫秒/帧,配置为最高画质。

下方图1到图4重点体现了如何将RTX GI的各个方面结合起来,在保持性能同时,创建惊艳的整体视觉效果。

                                                                   图1:直接照明


                                                               图2:添加体积光

                                                           图3:光面全局照明

                                                          图4:体现材质的最终效果


优 势


RTX GI非常适用于:

● 室内外及室内。RTX可避免漏光。

● 游戏运行时。RTX GI可保障性能,可跨GPU扩展,分辨率高达4K,且无噪点。

● 游戏制作。RTX GI可告别烘焙耗时,无需每探头调优,并能够加速当前光照探针工作流程和专业度的提升。

● 任何光照类型:RTX GI可针对点、线、面积照明、天空盒照明和发光物体自动展开工作。

● 引擎:RTX GI可升级现有光照探针引擎数据路径和工具。

● 内容创建:RTX GI采用完全动态的场景,无需人工干预。

● 可扩展性:一条代码路径即可实现所有,从能够避免旧有遗留平台漏光现象的烘焙光照探针,价格较低的GPU上慢慢更新的运行时GI,到发烧友级GPU上的即时动态GI。它能够在发挥高端PC强大功能的同时提供广泛的支持。


成 本

RTX GI的主要成本和局限性如下:

● 每个级联5MB GPU RAM,所有级联和中间层峰值均为20MB

● 在固定时间模式下,1-2毫秒/帧可获最佳性能,在超高固定画质模式下,1-2 Mray/帧可获最佳性能(在2080 Ti上亦如此)

● 在针对其他效果(如光面和阴影光线)使用光线追踪时,可最大限度地减少开销。

● 在画面开发和制作早期就应引入RTX GI。GI能够极大程度上改变光照,比直射光需要更多符合物理原理的几何图形和调优,也为游戏领域带来了全新机遇。

● 基于低端GPU则光照流速较慢(世界-空间延迟,无屏幕-空间重影)

● 阴影图类的偏置参数必须调优至场景比例。

● 无法防止零厚度/单面墙漏光

● 必须与另外的光面全局照明解决方案(如屏幕-空间光线追踪、去噪几何光线追踪或环境探针)配合使用。


全局照明要点

我们将会对适用于实时应用程序开发者的全局照明的核心概念做一个简单的介绍。接下来将重点介绍有助于理解RTX GI的术语和底层技术,即动态漫射全局照明。

直接照明

图5显示了一个灰盒的2D示意图。左墙为黄色,右墙为青色(蓝绿色)。盒子顶部有一个灯泡,我将其称为发射器(emitter),以便与光线中的"光"能区分开来。盒子右上角有一个相机,底部有一个灰色球体。地板上的深色矩形代表球体的阴影。

                                               图5:直接照明会从发射器端直接抵达。

直接照明是从发射器直接照射到表面的光。我画了两条直接照明光线的路径,即明亮的白色箭头。还有无限多的其他直接照明光线。

当直接照明从表面散射到相机,相机就能看到这些表面。我们看到的表面颜色是表面反射的光的颜色。灰色箭头表示灰色球体,黄色箭头表示黄色墙壁。相机从其视点看到的这些表面为"相机主表面"。请注意,从光的角度来看,任何能接收到直接照明的表面都是主表面。

三维场景中直接照明的例子如图7所示。阳光透过左墙屋顶上方的一个洞照射进来。阴影是完全黑色的,因为没有能够直接从太阳追踪到这些位置的线。图像非常暗,因为大部分场景并非直接照明。

                                           图6:仅直接照明。注意犀利的阴影。

直接照明是通过像素着色器和阴影地图实时计算得出,如今大多数游戏都在使用。

全局照明

还有一些相机无法直接看到,但会影响图像的次表层。图7显示了一些直接照射到相机后方青色墙壁上的光线。青色的墙将青色的光反射到中间的球体上。(光反射可反向互换,也称为"散射"或"反弹",它与"着色"过程相同。)

虽然相机无法看到青色的墙,但它可以看到球体被青色反射光照亮的一面。这种光是间接的,称为全局照明,缩写为"GI"。

在这种情况下,球体一侧的青色光在到达相机之前已经反射了两次。

                                                 图7:全局照明至少反射两次。

由于光线不断在表层反射,直至被完全吸收,因此也会有三次、四次、五次甚至更多次反射的全局照明。下图显示了一条有五次反射的路径。最后呈现深绿色,因为青色墙吸收了所有的红色,黄色墙吸收了所有的蓝色。

                                                     图8:五次反射的全局照明路径


现实世界中,全局照明可以无限次地反射。然而,每次都会被吸收一些光线。几次反射之后就所剩无几,无需进一步模拟了。电影的离线渲染通常使用5到10次反射。

以前,游戏中的全局照明在制作过程中是离线烘焙(预先计算)的,存储在光照图或辐照度探针中。动态GI有一些小技巧,比如屏幕-空间光线追踪,但在以前的游戏中,大多数全局照明无法随场景而改变。借助GPU加速的几何光线追踪,日后的新游戏将能够实时计算高画质的全局照明。

在学术界的术语中,"全局"照明包括直接照明。在游戏界的术语中,"全局"通常指的只是间接光照,直接光照是分开计算的。

图9中的3D场景包含直接照明和完整全局照明,这是从我们实时操作中的截图。展示的只是光照,没有材质(纹理)。全局照明有点红色的色调,因为看不见的墙体材质是红色的。这一场景中的大部分光照来自全局照明。

                                                           图9:直接+全局照明

渲染器为每条光线路径使用了数千次反射。但每次反射都会丢失一些光线,而且纹理贴图的精度也有限。因此,只有前二十次左右的反射才会为画质带来明显差异。例如,对于90%的反射壁,经过20次反射后,1−0.920=87%的光已被吸收。

可见性

在探讨渲染时,可见性的意思不仅是相机能看到的内容,也代表了任意两点间是否有一条通畅的直线路径。主表层对相机可见。得到直接照明的点对发射器可见。阴影的位置对发射器不可见,如图10所示。

                                                       图10:阴影对发射器不可见。

重要的是,物体可以投射间接光影,以实现精确的全局照明。这意味着需要计算所有点的可见性,且仅允许光线在可见性良好的点之间反射。很明显,物体在阻挡直接光照的同时,也会阻挡间接光照,因为在现实世界中确实如此。然而,对于全局照明,可见性的计算可能会很棘手。就像2000年以前的3D游戏通常不具备正确的阴影一样,现在许多游戏也会为全局照明有意忽略可见性,或在计算可见性时尽力隐藏错误。我们根据视觉误差的明暗将其称为漏光或漏影。

光面反射

图11中的图表显示了放大镜下的"平面"的示意图。在微观层面上,通常都会显得有点粗糙。其表面就像一面破碎的镜子,即使是岩石、苹果或皮革等看上去完全不像镜子的表面也是如此。这些大量的镜面碎片被称为微面。

                                                    图11:镜面式微面上的光面反射。

当光线照在物体表面并从一个微面上反射回来时,就会产生一次光面反射。(亦称为“镜面”或“亮面”,GGX和Blinn-Phong这两个微面模型可能相对来说比较广为熟知。)

光面反射包括一系列的光照,包括镜面、亮面、微面、粗糙度/平滑度、GGX、Blinn-Phong、高光等等,如图12所示。其共性包括:
光在表层散射
● 外观随角度而变化
● 反射颜色往往不随材质而变化。

                                                   图12:三维场景中的光面反射

反射方向遵循微面的镜面方向,像台球一样反弹。如果表面在显微镜下是光滑的,你就会看到完美的镜面反射。粗糙的表面会产生模糊或暗淡的反射,因为不同的面向会向不同方向反射光线。

如果直接看向反射很亮的物体,比如发射器,那么你会看到一个亮点。但实际上一切都有反射。有时是因为天太暗了,只有仔细看才能发现。

RTX GI会照亮光面反射中看到的表层,并能够将二次镜面反射合并到通往最终漫反射的GI路径中。但它不会为相机视角渲染光面反射。本文的重点是漫射GI,因此会简要描述了一种光面光线追踪技术,但不会探讨如何在制作过程中对其进行优化。

漫反射

你不会在诸如办公室墙壁的表面上看到很多光面反射。大部分照射在这些表面上的光都会渗透至其表面下方一点,而非在表面散射。光线四处散射后以随机方向射出。这就是漫反射,如图13所示。

                                                    图13:物体内漫反射光的散射

由于光与材质的相互作用很强,所呈现的光的颜色就已经被材质过滤了。真实世界中的效果与实时渲染中的效果略有不同,因为大多数渲染只追踪红、绿和蓝这三种颜色。然而,这种近似的做法在大多数情况下已足够,至少对于娱乐类应用程序。

漫反射技术的例子包括Matte、Lambertian、Oren-Nayar、Henyey-Greenstein、Diffuse BRDF等等。共同点包括:
● 光在表面以下散射。
● 光从各个方向均可见。
● 颜色是光和材质颜色的产物。
这一物理过程还会带来深入表层下的散射和传播。

图14显示了3D场景中全局照明的漫射部分,包括空气中的微小尘埃和雾粒散射出的漫射光,产生体积效应。

                                                 图14:漫射全局照明,包括体积光

在物理术语中,我所描述的漫射全局照明为辐射场。它由各种反射组成,其中相机前的最后一次反射是漫反射。现代光照图/辐射度法线贴图、体素和辐射探针会存储这种照明,尽管在处理可见性时经常会遇到一些问题。漫射GI/辐射场不同于辐射度,辐射度要求所有反射均为漫反射。这就是《雷神之锤3》和更早前光照图所储存的。

总  结

至此,我们已经介绍了为理解RTX GI技术能实现的功能而需要了解的所有术语:
● 动态 – 一切均可在运行时进行更改:相机位置、发射器、几何图形、甚至材质。
● 漫反射 – 最后一次进入相机的反射来自材质的漫反射。至最后一次反射为止的GI路径既可以是光面反射也可以是漫反射。最后一次反射的光面部分可通过光面光线追踪或屏幕空间光线追踪单独处理。
● 全局照明 – 光已至少经过两次表面反射后达到相机,并可在纹理贴图精度范围内无限次反射。

以及全局照明可见性这一重要概念,即RTX GI能够以一种全新方式进行计算,以防止漏光并加快工作流程。