路径追踪器

关于虚幻引擎中路径追踪器的概述。

Choose your operating system:

Windows

macOS

Linux

路径追踪器(Path Tracer)是一种渐进式的硬件加速渲染模式,能够在材质上呈现物理真实且无损的全局光照、反射和折射效果,弥补实时渲染特性的不足。它采用虚幻引擎内置的光线追踪架构,几乎不需要额外的设置,即可实现干净而逼真的渲染。

LS_CineCameraActor13_508_0000_Ultra.png

ARCHVYZ的"虚幻引擎虚拟之旅"。 设计:Toledano Architects。

路径追踪器采用与其他光追功能相同的光追架构,例如 实时光线追踪 GPU Lightmass ,使其用作 真实对照物(ground truth comparison) 和产品渲染的理想之选。路径追踪器仅使用场景中存在的几何体和材质来渲染无偏差的结果,并不采用为实时渲染而开发的相同光线追踪代码。

路径追踪器的好处

与其他渲染模式相比,路径追踪器具有以下优势:

  • 可生成高品质的真实渲染效果,并且物理精确。

  • 无需额外设置,或者只需很少设置,就能获得与其他离线渲染器相当的效果。

  • 缩小与类似的实时渲染特性之间的差距。例如,反射和折射中看到的材质可以不受限制地渲染,比如可以存在全局光照和路径追踪阴影。

  • 与Sequencer和影片渲染队列完整集成,以便支持影视品质级别的渲染输出。

路径追踪场景示例

以下场景是使用路径追踪器实现的高品质渲染示例。

LS_CineCameraActor20_612_0000_Ultra.png

ARCHVYZ的"虚幻引擎虚拟之旅"。 设计:Toledano Architects。

在你的项目中启用路径追踪器

为项目启用必要的光线追踪功能后,路径追踪器可用。必须满足以下系统要求,并且必须启用这些设置。

系统要求:

  • 操作系统: Windows 10 1809或更高版本

  • GPU: 支持NVIDIA RTX和DXR驱动程序的GTX系列显卡

项目设置:

光线追踪项目设置

  • 平台(Platforms)> Windows > 目标RHI(Targeted RHIs): DirectX 12

  • 引擎(Engine)> 渲染(Rendering)> 光线追踪(Ray Tracing):启用 光线追踪(Ray Tracing)

  • 引擎(Engine)> 渲染(Rendering)> 优化(Optimizations):启用 支持计算皮肤缓存(Support Compute Skin Cache)

    为项目启用光线追踪后,如果你尚未启用 支持计算皮肤缓存(Support Compute Skin Cache) ,系统会弹出窗口,要求你启用。此属性是支持光线追踪功能所必需的。

重启引擎,使更改生效。

路径追踪器的局限性

以下是虚幻引擎中路径追踪当前存在的一些局限性。

  • 明亮的材质会使室内渲染速度放慢

    • 反射率值(albedo)接近1.0的材质(例如亮白色)会导致帧的渲染用时过长,因为路径追踪器需要多次反射才能模拟光线路径。室内场景尤其容易受到这种影响,因为光线在终止之前,可能需要更长的时间才能逃离场景。路径追踪器采用了俄罗斯轮盘(Russian Roulette)技术,来更快地结束那些不太可能为场景做出贡献的光线。光线不太可能在场景中连续地反射,因为光线只要有可能,就会被俄罗斯轮盘技术终止。当材质的反射率值接近1.0时,光线路径不太可能终止,并且会导致帧的渲染时间更长。

    • 在现实世界中,很少有能够反射所有入射光的材质,而且这类材质的表面往往会褪色。因此,建议你将所有漫反射材质的基础颜色保持在0.8以下。

  • 动态场景元素

    • 路径追踪器在工作时,会让渲染器随时间不断累加采样(sample)。这很适合静态场景,但对于包含移动光源、动画蒙皮模型、视觉特效等元素的动态场景来说则不然。这些类型的元素不会使编辑器中的路径追踪无效,并且会在帧中显示为模糊或纹路瑕疵。这仅在编辑器中运行时出现,并且可以通过使用影片渲染队列渲染最终元素来补救。

  • Ray Tracing Material Quality Switch节点

    • 你可以使用 Ray Tracing Quality Switch 节点降低材质复杂性,降低运行时开销,从而优化材质在光线追踪下的特性。与延迟渲染器相比,这允许虚幻引擎的光线追踪功能使用更简单的材质。然而,由于路径追踪器使用光线追踪,即使对于摄像机可见的表面,这种近似也将直接可见,并会影响输出渲染的质量。因此,如果你打算使用路径追踪器,从材质图表中删除这些节点可能会有所帮助。未来的引擎版本会消除此限制。

有关专用功能的其他信息和说明,请参阅此页面的 支持功能 小节。

在关卡编辑器中使用路径追踪器

使用 视图模式(View Modes) 下拉菜单选择 路径追踪(Path Tracing) ,在关卡视口(Level Viewport)中启用路径追踪器(Path Tracer)视图。

路径追踪的关卡视口视图模式

启用后,渲染器会在摄像机静止的情况下,以当前视角为基础,连续添加采样,从而逐步累加采样。当达到目标采样数时,将对该帧去噪(如果在后期处理设置(Post Process Setting)中启用了去噪),以去除渲染中存在的剩余噪点。

在大多数情况下,当场景发生变化时,采样都会失效,该过程重新开始。移动摄像机、更改视图、更新或更改对象上的材质、移动对象或将对象添加到场景中,都会导致场景的采样无效。

路径追踪器可以"交互式"使用,随着采样的逐渐累积,画面会迅速开始显示带有着色效果的像素。渲染时间很大程度上取决于场景复杂性和取样的材质。室外场景往往更快,因为光线在逃逸(escape)前,反射次数和时间都更少。室内场景,尤其是那些反射率接近1.0的材质,会使光线路径变长,从而增加渲染时间。

后期处理体积路径追踪器设置

你可以在关卡中放置后期处理体积(Post Process Volume),配置路径追踪器的具体属性。其中包括最大光线反射次数、逐像素采样、抗锯齿质量(或过滤器宽度)等设置。

路径追踪器的设置可以在 PathTracing 类别下的后期处理体积细节(Post Process Volume Details)面板中找到。

路径追踪器后期处理体积设置

属性

说明

最大反射数(Max. Bounces)

设置光线在终止之前应该传播的最大光线反射数。

逐像素采样(Samples Per Pixel)

设置逐像素用于收敛的采样数。采样数增加会降低渲染图像的噪点。

过滤器宽度(Filter Width)

设置抗锯齿过滤器宽度,以提高输出质量。数值越低越清晰(更多锯齿),数值越大越柔和(更模糊)。

自发光材质(Emissive Materials)

为自发光材质启用反射光照。启用此属性后,不会计入同时由实际光源呈现表面的光照以及来自小发射器的噪点,以防重复计数。例如,在此案例中,具有代表小灯泡的自发光材质,同时还使用点光源或聚光光源照亮该区域,将导致重复计算。

最大路径曝光(Max Path Exposure)

设置路径追踪允许的最大曝光,以减少 萤火虫瑕疵 的发生。将曝光调整为比场景曝光更高的值,有助于减轻这些瑕疵。有关更多细节和此类瑕疵的示例,请参阅本页的 其他信息 小节)。

降噪器(Denoiser)

此开关会在上一个采样上使用当前加载的降噪器插件,来消除输出渲染内容中的噪点。默认情况下,虚幻引擎使用英特尔的开放图像降噪器(Open Image Denoiser)插件。如果未启用降噪器插件,则此开关对已渲染的输出没有影响。

使用影片渲染队列的路径追踪渲染

本小节将详细介绍如何使用影片渲染队列生成路径追踪渲染输出。有关一般用法和工作流程信息,请先参阅 影片渲染队列 ,然后再继续。

在生成高品质渲染输出时, 影片渲染队列 (MRQ)十分有用。与路径追踪器结合使用时,它的渲染效果比其他方式好很多。

路径追踪器(Path Tracer) 模块使路径追踪器能够输出渲染帧,并提供一些其渲染路径的专用设置。

影片渲染队列路径追踪器模块设置

放置在关卡中的 后期处理体积(Post Process Volumes) 还将控制特定的路径追踪功能,例如最大光线反射次数、对自发光材质的支持和曝光。

路径追踪器后期处理体积设置

MRQ还包含其他设置模块,这些模块提供了额外的功能按钮和选项,可以实现更高品质的渲染。

  • 高分辨率 模块提供了可将帧渲染成单独图块的设置,然后将这些图块组合起来,渲染出其他方式难以实现的更高的单帧分辨率。单个图块可以渲染成显卡能够支持的最大分辨率(例如,对于RTX 3080显卡,分辨率为7680x4320)。

  • 抗锯齿 模块提供了专用设置来调整逐像素采样数,并且可以获得更好的动态模糊品质。该模块提供了预热时间,以便准备关卡加载和视觉效果,从而更准确地渲染场景。

    • 时态采样计数(Temporal Sample Count) 会稍微偏移时间并插值多个渲染帧,从而提高动态模糊质量。该采样累加发生在降噪之后,有助于稳定来自各个空间通道的残余瑕疵。

    • 空间采样计数(Spatial Sample Count) 可以设置每帧要使用的逐像素采样数。增加逐像素采样可减少每个渲染通道中存在的噪点,但会增加渲染每帧所需的时间。后期处理体积(Post Process Volume)的逐像素采样计数设置对此设置没有影响。

    • 每个像素的采样总和是空间和时态采样计数的乘积。某些情况下,将采样次数平摊到时态采样和空间采样能产生更好的效果。例如,如果你想每个像素采样16次,你可以将4次用于时态采样,4次用于空间采样,或者16个用于空间,1个用于时态。

  • 控制台变量 模块使你能够添加与渲染帧相关的控制台变量。这包括覆盖品质相关的设置,或切换与路径追踪器相关的设置。

  • 输出 模块提供了设置供你配置输出目录、文件名、图像分辨率和你要渲染的开始帧/结束帧。

其他信息

路径追踪模式的运行方式与虚幻引擎中的其他一些渲染方法不同。这意味着适用于实时渲染的内容可能不适用于路径追踪渲染。以下小节将介绍其中的一些不一致和常见问题,以及你可以采取哪些步骤来改善使用路径追踪器的结果。

减少萤火虫瑕疵

路径追踪器模拟光源的方式是根据材质属性随机追踪光线。如果场景的明亮区域被发现的可能性较低,生成的采样可能会变得过亮,并且这种闪光(或俗称"萤火虫"效果)会在画面中反复闪烁。路径追踪会尝试将导致这些效果的来源降至最低,但在某些情况下仍可能发生。

路径追踪器萤火虫瑕疵

当路径追踪结果与泛光后处期理通道相结合时,生成的像素会有明显的异常,比如出现又消失,或者变亮后又变暗。

后期处理设置中的 最大曝光路径(Max Exposure Path) 可以控制基于路径追踪渲染的场景中的最大曝光量。通过设置后期处理 最大EV100(Max EV100) (可在镜头(Lens) > 曝光(Exposure)分段下找到),将场景曝光提高几个梯度,可以减少"萤火虫"出现的机会。

降噪

即使采样次数很高,路径追踪器在渲染画面时始终会残留一些噪点。后期处理体积(Post Processing Volume)设置中的去噪选项采用了 英特尔的开放图像降噪 库,以便从最后一次采样中去除噪点。

降噪器在CPU上执行,目前并非为交互式降噪而设计,而是提升长时间运行帧的品质。目前它无法保证时态一致性,稳定输出需要相对较高的逐像素采样数。使用影片渲染队列(Movie Render Queue)时,还可以通过增加 抗锯齿(Anti-aliasing) 设置模块中的 时间采样计数(Temporal Sample Count) 来提高时间稳定性。

降噪后的图像

未应用降噪

使用路径追踪器渲染天空光照

天空光照有两种处理方式:一是使用带有天空材质的传统天空盒,二是使用天空光照的 实时捕获(Real Time Capture) 模式,捕获场景中的天空、大气和云。

skyboxmesh.png

VolClouds.png

天空盒网格体

天空光照实时捕获

若要使用天空盒表示天空,需要在网格体和材质中进行一些设置,以便配合路径追踪器。首先,天空材质必须在材质的 细节(Details) 面板设置中启用标记 是天空(Is Sky) 。这样可以确保当场景中存在天空光照时,天空盒材质的光照不会被计算两次。如果天空盒实际上被计算两次,这也有可能减少可能出现的噪点量。

材质设置是天空标记

在关卡中,选择天空盒Actor并使用 细节(Details) 面板以禁用 投射阴影(Cast Shadows) ,防止网格体遮挡场景中天空光照和定向光源的贡献。

禁用天空盒网格体上的阴影

你也可以通过在天空光照上启用 实时捕获(Real Time Capture) 模式来捕获来自 天空大气 体积云 系统的光照贡献。由于在呈现天空光照时,存在捕获天空盒、天空大气和体积云的这种限制,它们的分辨率取决于天空光照 立方体贴图分辨率(Cubemap Resolution)

VolClouds_128Res.png

VolClouds_512Res.png

天空光照立方体贴图分辨率:128(默认值)

天空光照立方体贴图分辨率:512

除非你启用 下半球是纯色(Lower Hemisphere Is Solid Color) 并设置 下半球颜色(Lower Hemisphere Color) ,否则地平线下方的区域会显示为黑色。

下半球颜色默认值和设置的颜色

默认 下半球颜色(Lower Hemisphere Color) 和设置的颜色。

光源的直接可见性

默认情况下,非精确光源(例如具有源半径的点光源、矩形光源和天空光照)对于直射摄像机光线不可见。例外情况是启用了 实时捕获(Real Time Capture) 的天空光照。

与天空盒几何体和静态或指定的立方体贴图配对的天空光照通常不会被摄像机光线看到。这可以通过设置控制台变量 r.PathTracing.VisibleLights 1 来修改。

无论是否启用了可见光源控制台变量,所有光源在反射和折射中都可见。这确保了所有可能的光线路径都能看到光源。但是,在某些情况下,这可能会导致意外行为。例如,直接放置在玻璃窗后面的矩形光源将可见,并且会阻挡从窗户望出去的视野,这仅适用于真折射,且折射率不等于1时。

使用路径追踪器进行玻璃渲染

有两种使用路径追踪器渲染具有指定厚度玻璃的方法:其一是使用一些值,基于表面的物理属性提供物理上准确的外观,其二是使用其他属性,允许对美术设计进行更多控制,但物理准确性更低。这两种方法均可接受且有效,可与路径追踪器一起使用,使用玻璃类材质获得高质量结果。

要想获得物理上准确的结果,只需在材质中设置一些值和参数,如下例所示:

点击查看大图。

若要加强对美术设计的控制,调整基础颜色可以为玻璃反射(但不是阴影)着色,并且插入不透明度输入的菲涅尔透镜可以更紧密地控制反射衰减。

点击查看大图。

近似焦散

路径追踪器将使用近似焦散路径来帮助减少噪点,尤其是在玻璃或金属表面的粗糙度值较低的情况下。对于这些类型的材质,反射焦散会产生各种图案,并且会占用不合理的时间或采样量来收敛,以便获得无噪点图像。

例如,在渲染和采样累加过程中,这些图像是按顺序拍摄的,最终的图像就是完成后的去噪结果。

点击查看大图。

因为焦散通常需要很长时间才能收敛到无噪点结果,路径追踪器将通过使用控制台命令 r.PathTracing.ApproximateCaustics 1 来接近图像中存在的焦散,从而降低图像噪点。 此变量默认启用。

近似焦散:启用

近似焦散:禁用

另一个需要考虑的因素是折射焦散和近似焦散之间的区别。你可以使用降噪器预览在给予足够时间收敛的情况下焦散的外观,而近似焦散可以在更短的时间内提供可可投入使用的图像。

折射焦散 | 近似焦散:启用 (w:900)

折射焦散 | 近似焦散:禁用 (w:900)

薄半透明着色模型

薄半透明(Thin Translucency) 着色模型可以用于对具有近似焦散的厚玻璃进行适当着色的半透明投影,获得上物理准确的结果。

点击查看大图。

需要注意一点,每个界面都被视为独特的玻璃窗格,这意味着着色器不会计算折射,并且对象看起来更像是气泡而不是立体几何体。

标准玻璃材质

薄半透明玻璃材质

点击查看大图。

点击查看大图。

粗糙面的光透射和反射

路径追踪器的独特之处在于,除了粗糙面反射之外,它还支持渲染粗糙面透射,而对于路径追踪器,这些着色器参数会耦合在一起。

在下面的示例中,玻璃材质的粗糙度值会发生变化,以便展示近似焦散、反射粗糙度以及它对投射的半透明阴影的影响。

拖动滑块可以看到玻璃材质从无粗糙度变为有粗糙度。粗糙度值范围为0到0.2

实用的控制台变量

以下是在使用路径追踪器时启用的一些实用的控制台变量。

控制台变量

说明

r.PathTracing.VisibleLights

使所有光源对摄像机光线可见。此功能默认禁用,以便匹配引擎的基于光栅的模式,但它有助于了解光源的建模方式以及发现光源重叠的情况。

r.PathTracing.ProgressDisplay

这会向视图添加小进度条,显示逐像素配置采样的进度。累加完成后进度条会自动隐藏。这不会影响使用影片渲染队列的渲染,可以安心使用。

r.PathTracing.Denoiser

此选项可用于快速切换降噪器的开关状态(假设当前采样累加已完成)。与后期处理体积(Post Process Volume)设置不同,更改此设置不会导致累加重新启动,并且可用于快速比较启用和不启用降噪的渲染帧。

路径追踪器支持的功能

路径追踪器的局限性在于,当前实现存在限制或有些功能未计划支持。此功能列表旨在让你了解当前版本目前支持的功能。这并非引擎所有支持功能/属性的完整列表。

路径追踪器与虚幻引擎的 实时光线追踪 功能拥有相同的代码。通常,如果实时光线追踪支持某个功能,那么路径追踪器应该也是支持的。

功能名称

是否支持?

额外讲解

几何体类型

蒙皮网格体(Skinned Meshes)

是(Yes)

动画不会使路径追踪器失效,可能会导致视口中出现模糊或纹路。影片渲染队列应该用于输出最终图像。

世界位置偏移驱动型动画(World Position Offset-driven Animation)

是(Yes)

应该在单个场景Actor上启用 世界位置偏移求值(Evaluate World Position Offset) 。它们不会使路径追踪器失效,可能会导致视口中出现模糊或纹路。影片渲染队列应该用于输出最终图像。

毛发(Hair)

部分(Partially)

  • 虚幻引擎4目前支持发片和头盔网格体。

  • 虚幻引擎5.0将对发束提供试验性支持。

地形(Landscape)

是(Yes)

样条线网格体(Spline Meshes)

否(No)

实例化静态网格体(Instanced Static Mesh)

是(Yes)

层级实例化静态网格体(Hierarchical Instanced Static Mesh)

是(Yes)

视觉效果

Niagara粒子系统(Niagara Particle Systems)

是(Yes)

粒子系统不会使路径追踪器失效,会导致视口中出现模糊/纹路。影片渲染队列应该用于输出最终图像。

级联粒子系统(Cascade Particle Systems)

否(No)

光源类型

定向光源(Directional Light)

是(Yes)

天空光照(Sky Light)

是(Yes)

  • 当前,天空光照捕获仅在启用 实时捕获(Real Time Capture) 时可见。

    • 尚不支持天空大气和体积云。

    • 要提高渲染质量,请将天空光照捕获的分辨率提高到高于用于实时捕获的分辨率。

  • 当不使用实时捕获(Real Time Capture)模式时,天空盒/球体应该会呈现天空。它的材质必须在材质设置中启用 是天空(Is Sky) 标记,否则其光照将针对天空光照重复计算,并且可能会产生噪点,因为它不会进行重要性采样。

  • 天空盒/球体形状也应该 投射阴影,因为它们可以遮挡来自天空光照和定向光源的贡献。

  • 启用 下半球是纯色(Lower Hemisphere Is Solid Color) ,并设置 下半球颜色(Lower Hemisphere Color) ,以便在地平线下方使用路径追踪器应用颜色。否则,默认情况下,它会显示为黑色。

点光源(Point Light)

是(Yes)

聚光光源(Spot Light)

是(Yes)

矩形光源(Rect Light)

是(Yes)

光照特性/属性

自发光材质(Emissive Materials)

是(Yes)

自发光小部件会给渲染后的场景带来大量噪点。如果自发光部件有与之关联的光源,它们也可能导致光照重复计数。使用后期处理体积(Post Process Volume)设置中的 自发光材质(Emissive Materials) 复选框禁用它们,或使用控制台变量 r.PathTracing.EnableEmissive 0

天空大气(Sky Atmosphere)

部分(Partially)

场景中需要启用了 实时捕获(Real Time Capture) 的天空光照。

体积云(Volumetric Clouds)

部分(Partially)

场景中需要启用了 实时捕获(Real Time Capture) 的天空光照。

指数高度雾(Exponential Height Fog)

否(No)

计划在未来引擎版本中推出。

体积雾(Volumetric Fog)

否(No)

计划在未来引擎版本中推出。

IES配置文件(IES Profiles)

是(Yes)

光源函数(Light Functions)

否(No)

后期处理

景深(Depth of Field)

部分(Partially)

尚不支持半透明材质。

动态模糊(Motion Blur)

部分(Partially)

仅支持来自影片渲染队列的渲染帧。

材质着色模型

无光照(Unlit)

是(Yes)

默认光照(Default Lit)

是(Yes)

次表面(Subsurface)

是(Yes)

预集成皮肤(Preintegrated Skin)

是(Yes)

渲染与次表面着色模型相同。

透明涂层(Clear Coat)

是(Yes)

次表面轮廓(Subsurface Profile)

是(Yes)

需要启用了 Burley 次表面散射的次表面轮廓。

双面植被(Two Sided Foliage)

是(Yes)

毛发(Hair)

否(No)

布料(Cloth)

是(Yes)

眼睛(Eye)

否(No)

SingleLayerWater

否(No)

薄半透明(Thin Translucent)

是(Yes)

从材质表达式(From Material Expression)

是(Yes)

材质特性

彩色阴影(Colored Shadows)

是(Yes)

要求材质设置 薄半透明(Thin Translucent) 材质着色模型。

半透明阴影(Translucent Shadows)

是(Yes)

折射(Refraction)

是(Yes)

贴花(Decals)

否(No)

各向异性(Anisotropy)

是(Yes)

系统支持

多个GPU(Multiple GPU)

否(No)

Sequencer影片渲染队列(Sequencer Movie Render Queue)

是(Yes)

正交摄像机(Orthographic Camera)

部分(Partially)

目前不支持通过影片渲染队列输出。

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消