路径追踪器(Path Tracer)是一种渐进式的硬件加速渲染模式,能够在材质上呈现物理真实且无损的全局光照、反射和折射效果,弥补实时渲染特性的不足。它采用虚幻引擎内置的光线追踪架构,几乎不需要额外的设置,即可实现干净而逼真的渲染。
ARCHVYZ的"虚幻引擎虚拟之旅"。 设计:Toledano Architects。
路径追踪器采用与其他光追功能相同的光追架构,例如实时光线追踪和GPU Lightmass,使其用作基准对照物(ground truth comparison)和产品渲染的理想之选。路径追踪器仅使用场景中存在的几何体和材质来渲染无偏差的结果,并不采用为实时渲染而开发的相同光线追踪代码。
路径追踪器的好处
与其他渲染模式相比,路径追踪器具有以下优势:
可生成高品质的真实渲染效果,并且物理精确。
无需额外设置,或者只需很少设置,就能获得与其他离线渲染器相当的效果。
缩小与类似的实时渲染特性之间的差距。例如,反射和折射中看到的材质可以不受限制地渲染,比如可以存在全局光照和路径追踪阴影。
与Sequencer和影片渲染队列完整集成,以便支持影视品质级别的渲染输出。
路径追踪场景示例
以下场景是使用路径追踪器实现的高品质渲染示例。
ARCHVYZ的"虚幻引擎虚拟之旅"。 设计:Toledano Architects。
在你的项目中启用路径追踪器
路径追踪器需要启用硬件光追功能。光线追踪功能后,路径追踪器可用。必须满足以下系统要求,并且必须启用这些设置。
系统要求:
操作系统: Windows 10 1809或更高版本
GPU: 支持NVIDIA RTX和DXR驱动程序的GTX系列显卡
项目设置:
平台(Platforms)> Windows > 目标RHI(Targeted RHIs): DirectX 12
引擎(Engine)> 渲染(Rendering)> 硬件光线追踪(Ray Tracing):启用 路径追踪
引擎(Engine)> 渲染(Rendering)> 硬件光线追踪(Ray Tracing):启用 支持硬件光线追踪
引擎(Engine)> 渲染(Rendering)> 硬件光追:启用 路径追踪
虚幻引擎5引入了一些设置,可以控制创建材质时使用的路径追踪器相关的着色器排列。不使用路径追踪器的项目可以禁用该设置,减少着色器的编译时间。
引擎(Engine)> 渲染(Rendering)> 优化:启用 支持计算蒙皮缓存(Support Compute Skin Cache)
为项目启用"支持硬件光线追踪"后,会有一个弹窗要求你启用 支持计算蒙皮缓存 (如尚未启用)。硬件光线追踪和路径追踪功能必需使用该功能。
重启引擎,使更改生效。
在关卡编辑器中使用路径追踪器
使用 视图模式(View Modes) 下拉菜单选择 路径追踪(Path Tracing) ,在关卡视口(Level Viewport)中启用路径追踪器(Path Tracer)视图。
启用后,渲染器会在摄像机静止的情况下,以当前视角为基础,连续添加采样,从而逐步累加采样。当达到目标采样数时,将对该帧去噪(如果在后期处理设置(Post Process Setting)中启用了去噪),以去除渲染中存在的剩余噪点。
在大多数情况下,当场景发生变化时,采样都会失效,该过程重新开始。移动摄像机、更改视图、更新或更改对象上的材质、移动对象或将对象添加到场景中,都会导致场景的采样无效。
路径追踪器可以"交互式"使用,随着采样的逐渐累积,画面会迅速开始显示带有着色效果的像素。渲染时间很大程度上取决于场景复杂性和取样的材质。室外场景往往更快,因为光线在逃逸(escape)前,反射次数和时间都更少。室内场景,尤其是那些反射率接近1.0的材质,会使光线路径变长,从而增加渲染时间。
使用影片渲染队列的路径追踪渲染
本小节将详细介绍如何使用影片渲染队列生成路径追踪渲染输出。有关一般用法和工作流程信息,请先参阅影片渲染队列,然后再继续。
在生成高品质渲染输出时, 影片渲染队列 (MRQ)十分有用。与路径追踪器结合使用时,它的渲染效果比其他方式好很多。
路径追踪器(Path Tracer) 模块使路径追踪器能够输出渲染帧,并提供一些其渲染路径的专用设置。
放置在关卡中的 后期处理体积(Post Process Volumes) 还将控制特定的路径追踪功能,例如最大光线反射次数、对自发光材质的支持和曝光。
MRQ还包含其他设置模块,这些模块提供了额外的功能按钮和选项,可以实现更高品质的渲染。
高分辨率模块提供了可将帧渲染成单独图块的设置,然后将这些图块组合起来,渲染出其他方式难以实现的更高的单帧分辨率。单个图块可以渲染成显卡能够支持的最大分辨率(例如,对于RTX 3080显卡,分辨率为7680x4320)。
抗锯齿模块提供了专用设置来调整逐像素采样数,并且可以获得更好的动态模糊品质。该模块提供了预热时间,以便准备关卡加载和视觉效果,从而更准确地渲染场景。
时态采样计数(Temporal Sample Count) 会稍微偏移时间并插值多个渲染帧,从而提高动态模糊质量。该采样累加发生在降噪之后,有助于稳定来自各个空间通道的残余瑕疵。
空间采样计数(Spatial Sample Count) 可以设置每帧要使用的逐像素采样数。增加逐像素采样可减少每个渲染通道中存在的噪点,但会增加渲染每帧所需的时间。后期处理体积(Post Process Volume)的逐像素采样计数设置对此设置没有影响。
每个像素的采样总和是空间和时态采样计数的乘积。某些情况下,将采样次数平摊到时态采样和空间采样能产生更好的效果。例如,如果你想每个像素采样16次,你可以将4次用于时态采样,4次用于空间采样,或者16个用于空间,1个用于时态。
控制台变量模块使你能够添加与渲染帧相关的控制台变量。这包括覆盖品质相关的设置,或切换与路径追踪器相关的设置。
输出模块提供了设置供你配置输出目录、文件名、图像分辨率和你要渲染的开始帧/结束帧。
路径追踪器后期处理体积设置
你可以在关卡中放置后期处理体积(Post Process Volume),配置路径追踪器的具体属性。其中包括最大光线反射次数、逐像素采样、抗锯齿质量(或过滤器宽度)等设置。
路径追踪器的设置可以在 PathTracing 类别下的后期处理体积细节(Post Process Volume Details)面板中找到。
属性 |
说明 |
---|---|
最大反射数(Max. Bounces) |
设置光线在终止之前应该传播的最大光线反射数。 |
逐像素采样(Samples Per Pixel) |
设置逐像素用于收敛的采样数。采样数增加会降低渲染图像的噪点。 |
过滤器宽度(Filter Width) |
设置抗锯齿过滤器宽度,以提高输出质量。数值越低越清晰(更多锯齿),数值越大越柔和(更模糊)。 |
自发光材质(Emissive Materials) |
为自发光材质启用反射光照。启用此属性后,不会计入同时由实际光源呈现表面的光照以及来自小发射器的噪点,以防重复计数。例如,在此案例中,具有代表小灯泡的自发光材质,同时还使用点光源或聚光源照亮该区域,将导致重复计算。 |
最大路径曝光(Max Path Exposure) |
设置路径追踪允许的最大曝光,以减少萤火虫瑕疵的发生。将曝光调整为比场景曝光更高的值,有助于减轻这些瑕疵。有关更多细节和此类瑕疵的示例,请参阅本页的其他信息小节)。 |
参考景深(Reference Depth of Field) |
启用参考质量景深,以取代后期处理效果。 |
参考大气(Reference Atmosphere) |
在大气中启用路径追踪,而不是将天空大气贡献烘焙到天空光照中。启用此设置后,将自动忽略场景中存在的天空光照组件。请参阅本页面的参考大气小节。 |
降噪器(Denoiser) |
此开关会在上一个采样上使用当前加载的降噪器插件,来消除输出渲染内容中的噪点。默认情况下,虚幻引擎使用英特尔的开放图像降噪器(Open Image Denoiser)插件。如果未启用降噪器插件,则此开关对已渲染的输出没有影响。 |
路径追踪器的局限性
以下是虚幻引擎中路径追踪当前存在的一些局限性。
明亮的材质会使室内渲染速度放慢
反射率值(albedo)接近1.0的材质(例如亮白色)会导致帧的渲染用时过长,因为路径追踪器需要多次反射才能模拟光线路径。室内场景尤其容易受到这种影响,因为光线在终止之前,可能需要更长的时间才能逃离场景。路径追踪器采用了俄罗斯轮盘(Russian Roulette)技术,来更快地结束那些不太可能为场景做出贡献的光线。光线不太可能在场景中连续地反射,因为光线只要有可能,就会被俄罗斯轮盘技术终止。当材质的反射率值接近1.0时,光线路径不太可能终止,并且会导致帧的渲染时间更长。
在现实世界中,很少有能够反射所有入射光的材质,而且这类材质的表面往往会褪色。因此,建议你将所有漫反射材质的基础颜色保持在0.8以下。
动态场景元素
路径追踪器在工作时,会让渲染器随时间不断累加采样(sample)。这很适合静态场景,但对于包含移动光源、动画蒙皮模型、视觉特效等元素的动态场景来说则不然。这些类型的元素不会使编辑器中的路径追踪无效,并且会在帧中显示为模糊或纹路瑕疵。这仅在编辑器中运行时出现,并且可以通过使用影片渲染队列渲染最终元素来补救。
Path Tracing Material Quality Switch节点
你可以使用 PathTracingQualityReplace 节点(或其他传统方法)降低材质复杂性,降低运行时开销,从而优化材质在光线追踪下的特性。与延迟渲染器相比,这允许虚幻引擎的光线追踪功能使用更简单的材质。由于运行时不是问题,所以不需要在材质上进行妥协。使用这类节点可有助于提供一种无损结果,并且无需复制材质。
Ray Tracing Material Quality Switch节点
通过使用 光线跟踪质量开关(Ray Tracing Quality Switch) 节点,减少复杂性,从而优化启用光线跟踪功能的材质,减少运行时开销。这使得虚幻引擎的光线跟踪功能相比延迟渲染器,可以使用更简单的材质。由于路径追踪主要用于高质量输出,所以它使用开关节点的 Normal 设置(尽管基于光线追踪)。要控制专门用于路径追踪器的材质设置,请使用 PathTracingQualitySwitch 节点。
HDRIBackdrop与路径追踪器不兼容
目前,HDRIBackdrop组件会导致在路径追踪器中出现重复计算的光照,并且禁用HDRI光照的重要性采样。建议使用具有指定纹理的天光设置,并设置路径追踪器控制台变量
r.PathTracing.VisibleLights 2
来使背景出现。
未提供可用于捕捉阴影的地平面。
有关专用功能的其他信息和说明,请参阅此页面的支持功能小节。
路径追踪器支持的功能
路径追踪器的局限性在于,当前实现存在限制或有些功能未计划支持。此功能列表旨在让你了解当前版本目前支持的功能。这并非引擎所有支持功能/属性的完整列表。
路径追踪器与虚幻引擎的实时光线追踪功能拥有相同的代码。通常,如果实时光线追踪支持某个功能,那么路径追踪器应该也是支持的。
功能名称 |
是否支持? |
额外讲解 |
||
---|---|---|---|---|
几何体类型 |
||||
Nanite |
否 |
使用回退网格体取代Nanite网格体。降低回退网格体的相对误差,可以让回退网格体的三角形数量更加接近源网格体。 |
||
蒙皮网格体(Skinned Meshes) |
是 |
动画不会使路径追踪器失效,可能会导致视口中出现模糊或纹路。影片渲染队列应该用于输出最终图像。 |
||
世界位置偏移驱动型动画(World Position Offset-driven Animation) |
是 |
应该在单个场景Actor上启用 世界位置偏移求值(Evaluate World Position Offset) 。它们不会使路径追踪器失效,可能会导致视口中出现模糊或纹路。影片渲染队列应该用于输出最终图像。 |
||
毛发发束(Hair Strands) |
是 |
对于毛发发束的支持仍在实验阶段;毛发可能需要很多资源来构建高效的加速结构。控制台变量 |
||
地形(Landscape) |
是 |
|||
样条线网格体(Spline Meshes) |
否 |
|||
实例化静态网格体(Instanced Static Mesh) |
是 |
|||
层级实例化静态网格体(Hierarchical Instanced Static Mesh) |
是 |
|||
水几何体(Water Geometry) |
是 |
|||
视觉效果 |
||||
Niagara粒子系统(Niagara Particle Systems) |
是 |
粒子系统不会使路径追踪器失效,会导致视口中出现模糊/纹路。影片渲染队列应该用于输出最终图像。 |
||
光源类型 |
||||
定向光源(Directional Light) |
是 |
|||
天空光照(Sky Light) |
是 |
|
||
点光源(Point Light) |
是 |
|||
聚光源(Spot Light) |
是 |
|||
矩形光源(Rect Light) |
是 |
|||
光照特性/属性 |
||||
自发光材质(Emissive Materials) |
是 |
自发光小部件会给渲染后的场景带来大量噪点。如果自发光部件有与之关联的光源,它们也可能导致光照重复计数。使用后期处理体积(Post Process Volume)设置中的 自发光材质(Emissive Materials) 复选框禁用它们,或使用控制台变量 |
||
天空大气(Sky Atmosphere) |
是 |
场景中需要在组件上启用了 实时捕获(Real Time Capture) 的天空光照。或者,启用后期处理体积设置 参考大气(Reference Atmosphere) ,它会对大气进行路径追踪,而不是将天空大气贡献烘焙到天空光照中。启用此设置后,将自动忽略场景中存在的天空光照。请参阅本页面的雾和大气小节。 |
||
体积云(Volumetric Clouds) |
部分 |
场景中需要启用了 实时捕获(Real Time Capture) 的天空光照。启用后期处理体积设置 参考大气(Reference Atmosphere) 后,此组件目前会被忽略。 |
||
指数高度雾(Exponential Height Fog) |
是 |
需要启用 体积雾(Volumetric Fog) 设置。并非所有功能按钮都支持,因为一些功能按钮具有非物理含义。请参阅本页面的雾和大气小节。 |
||
体积雾(Volumetric Fog) |
是 |
必须在指数高度雾组件上启用。请参阅本页面的雾和大气小节。 |
||
IES配置文件(IES Profiles) |
是 |
|||
光源函数(Light Functions) |
是 |
启用 |
||
后期处理 |
||||
景深(Depth of Field) |
是 |
默认情况下,路径追踪器会利用引擎的后期处理的景深,但会继承此方法在半透明材质方面的固有局限性。作为替代方法,也可在后期处理体积中启用参考质量模式,以在路径追踪过程中直接模拟景深。 |
||
动态模糊(Motion Blur) |
部分 |
在 路径追踪(Path Tracing) 模块上启用 参考动态模糊(Reference Motion Blur) 后,使用电影渲染队列可获得最准确的结果。此选项可实现更准确的动态模糊,以更高性能开销获得流畅的结果。在此模式下,不会应用后期处理向量模糊,并且会在所有空间和时间采样累积之后应用降噪。应当应用更高的时间取样数以提高质量。在使用非常高的时间取样数量时,请注意Sequencer中的更新分辨率限制。 |
||
材质着色模型 |
||||
无光照(Unlit) |
是 |
|||
默认光照(Default Lit) |
是 |
|||
次表面(Subsurface) |
是 |
|||
预集成皮肤(Preintegrated Skin) |
是 |
渲染与次表面着色模型相同。 |
||
Alpha维持(Alpha Holdout) |
是 |
|||
透明涂层(Clear Coat) |
是 |
|||
次表面轮廓(Subsurface Profile) |
是 |
需要启用了 Burley 次表面散射的次表面轮廓。 |
||
双面植被(Two Sided Foliage) |
是 |
|||
毛发(Hair) |
是 |
对此着色模型的支持仍被视为 试验性 ,尚未针对 光照(Lit) 着色模型的行为进行校准。 |
||
布料(Cloth) |
是 |
|||
眼睛(Eye) |
是 |
|||
SingleLayerWater |
是 |
添加了对此着色模型的试验性支持。栅格实现在很大程度上依赖于后期处理,目前无法实现密切匹配。 |
||
薄半透明((Thin Translucent) |
是 |
|||
从材质表达式(From Material Expression) |
是 |
|||
材质特性 |
||||
彩色阴影(Colored Shadows) |
是 |
可以用 薄半透明(Thin Translucent) 或固体玻璃来实现。参见本页的基于路径跟踪器的玻璃渲染和颜色吸收。 |
||
半透明阴影(Translucent Shadows) |
是 |
|||
折射(Refraction) |
是 |
|||
贴花(Decals) |
是 |
目前仅实现了平面贴花。不支持网格体贴花。 |
||
各向异性(Anisotropy) |
是 |
|||
系统支持 |
||||
多个GPU(Multiple GPU) |
否 |
|||
Sequencer影片渲染队列(Sequencer Movie Render Queue) |
是 |
|||
正交摄像机(Orthographic Camera) |
部分 |
目前不支持通过影片渲染队列输出。 |
||
逐个实例的自定义数据(Per Instance Custom Data) |
是 |
|||
逐个实例的随机数据(Per Instance Random Data) |
是 |
其他信息
路径追踪模式的运行方式与虚幻引擎中的其他一些渲染方法不同。这意味着适用于实时渲染的内容可能不适用于路径追踪渲染。以下小节将介绍其中的一些不一致和常见问题,以及你可以采取哪些步骤来改善使用路径追踪器的结果。
减少萤火虫瑕疵
路径追踪器模拟光源的方式是根据材质属性随机追踪光线。如果场景的明亮区域被发现的可能性较低,生成的采样可能会变得过亮,并且这种闪光(或俗称"萤火虫"效果)会在画面中反复闪烁。路径追踪会尝试将导致这些效果的来源降至最低,但在某些情况下仍可能发生。
当路径追踪结果与泛光后处期理通道相结合时,生成的像素会有明显的异常,比如出现又消失,或者变亮后又变暗。
后期处理设置中的 最大曝光路径(Max Exposure Path) 可以控制基于路径追踪渲染的场景中的最大曝光量。通过设置后期处理 最大EV100(Max EV100) (可在镜头(Lens) > 曝光(Exposure)分段下找到),将场景曝光提高几个梯度,可以减少"萤火虫"出现的机会。
降噪选项
通过视口使用路径追踪器交互式渲染帧,或使用电影渲染队列渲染帧时,总是会存在一些噪点。降低噪点的一种方式是,使用降噪算法来稳定最终结果,生成噪点更少的更干净图像。
在 路径追踪(Path Tracing) 分段下启用 降噪器(Denoiser) 时,路径追踪器通过 后期处理体积(Post Process Volume) 设置启用降噪。
降噪算法根据以下第三方降噪库,通过虚幻引擎中的插件来实现:
Intel的开放图像降噪库是基于CPU的降噪器,用于从上一个取样中去除噪点,并提高长时间运行帧的质量。
NVIDIA Optix AI加速的降噪器库是GPU加速的人工智能,通过数万张图像进行训练,以降低视觉噪点,同时提供更快的降噪时间。
开放图像降噪插件
OpenImageDenoise 插件默认启用。
此降噪器在CPU上运行,并非为交互式降噪而设计,而是用于帮助提高长时间运行帧的质量。此降噪器不保证在所有情况下取得时间一致性,并可能需要每个像素有很高的取样数量,才能实现稳定输出。使用电影渲染队列增加 抗锯齿(Anti-Aliasing) 模块设置中的 时间取样数量(Temporal Sample Count) 时,可以提高时间稳定性。
Optix降噪插件
此插件为试验性
OptixDenoise 插件必须在 插件(Plugins) 浏览器中启用。
此降噪器会使用GPU加速的人工智能降低视觉噪点,同时能提供更快的降噪时间。该降噪器还包含一个时间组件,可试图减少降噪后动画中的闪烁。
若你的项目同时启用了 OptixDenoise 和 OpenImageDenoise 插件,你必须使用控制台变量 r.PathTracing.SpatialDenoiser.Type
选择在后期处理体积设置中启用降噪时将使用哪个降噪器。值为0(默认值)时将使用OpenImageDenoise插件。设置为 1 将使用OptixDenoise插件。
使用路径追踪器渲染天空光照
天空光照有两种处理方式:一是使用带有天空材质的传统天空盒,二是使用天空光照的 实时捕获(Real Time Capture) 模式,捕获场景中的天空、大气和云。
|
|
---|---|
天空盒网格体 |
天空光照实时捕获 |
若要使用天空盒表示天空,需要在网格体和材质中进行一些设置,以便配合路径追踪器。首先,天空材质必须在材质的 细节(Details) 面板设置中启用标记 是天空(Is Sky) 。这样可以确保当场景中存在天空光照时,天空盒材质的光照不会被计算两次。如果天空盒实际上被计算两次,这也有可能减少可能出现的噪点量。
在关卡中,选择天空盒Actor并使用 细节(Details) 面板以禁用 投射阴影(Cast Shadows) ,防止网格体遮挡场景中天空光照和定向光源的贡献。
你也可以通过在天空光照上启用 实时捕获(Real Time Capture) 模式来捕获来自天空大气和体积云系统的光照贡献。由于在呈现天空光照时,存在捕获天空盒、天空大气和体积云的这种限制,它们的分辨率取决于天空光照 立方体贴图分辨率(Cubemap Resolution) 。
|
|
---|---|
天空光照立方体贴图分辨率:128(默认值) |
天空光照立方体贴图分辨率:512 |
雾和大气体积
路径追踪器支持天空大气和指数高度雾组件中的体积。
参考大气
在后期处理体积设置中启用 参考大气(Reference Atmosphere) 后,天空大气光照将根据体积计算,带来更逼真的结果。在此模式下,将自动忽略场景中的天空光照,因为天空光照仅受本地和定向光源影响。路径追踪器将行星表示为非常大的球体,这样就会呈现正确的阴影投射,并且地面颜色会在反射光照中从所有方向正确反射到天空。
关于使用参考大气的附加说明:
要按预期使用 天空大气(Sky Atmosphere) ,请将其 变换模式(Transform Mode) 设置调整为 组件变换时的行星顶部(Planet Top at Component Transform) ,并将组件移至场景下方。
体积云(Volumetric Cloud) 组件尚不受支持。它们需要启用了 实时捕获(Real Time Capture) 的天空光照。请参阅本页面的使用路径追踪器进行天空光照。
体积雾
使用启用了体积雾的指数高度雾组件时,支持雾。
并非所有功能按钮都受支持,因为一些参数具有非物理含义。支持的主要参数为:
雾密度和雾高度衰减
散射分布
反射率
消光比例
视野距离
请注意,这用于限制高度雾的影响区域,因为无限范围可能导致很长的渲染时间。
光源的直接可见性
默认情况下,非精确光源(例如具有源半径的点光源、矩形光源和天空光照)对于直射摄像机光线不可见。例外情况是启用了 实时捕获(Real Time Capture) 的天空光照。
与天空盒几何体和静态或指定的立方体贴图配对的天空光照通常不会被摄像机光线看到。这可以通过设置控制台变量 r.PathTracing.VisibleLights 1
来修改。
无论是否启用了可见光源控制台变量,所有光源在反射和折射中都可见。这确保了所有可能的光线路径都能看到光源。但是,在某些情况下,这可能会导致意外行为。例如,直接放置在玻璃窗后面的矩形光源将可见,并且会阻挡从窗户望出去的视野,这仅适用于真折射,且折射率不等于1时。
使用路径追踪器进行玻璃渲染
有两种使用路径追踪器渲染具有指定厚度玻璃的方法:其一是使用一些值,基于表面的物理属性提供物理上准确的外观,其二是使用其他属性,允许对美术设计进行更多控制,但物理准确性更低。这两种方法均可接受且有效,可与路径追踪器一起使用,使用玻璃类材质获得高质量结果。
要想获得物理上准确的结果,只需在材质中设置一些值和参数,如下例所示:
点击查看大图。
若要加强对美术设计的控制,调整基础颜色可以为玻璃反射(但不是阴影)着色,并且插入不透明度输入的菲涅尔透镜可以更紧密地控制反射衰减。
点击查看大图。
近似焦散
路径追踪器将使用近似焦散路径来帮助减少噪点,尤其是在玻璃或金属表面的粗糙度值较低的情况下。对于这些类型的材质,反射焦散会产生各种图案,并且会占用不合理的时间或采样量来收敛,以便获得无噪点图像。
例如,在渲染和采样累加过程中,这些图像是按顺序拍摄的,最终的图像就是完成后的去噪结果。
点击查看大图。
因为焦散通常需要很长时间才能收敛到无噪点结果,路径追踪器将通过使用控制台命令 r.PathTracing.ApproximateCaustics 1
来接近图像中存在的焦散,从而降低图像噪点。此变量默认启用。
另一个需要考虑的因素是折射焦散和近似焦散之间的区别。你可以使用降噪器预览在给予足够时间收敛的情况下焦散的外观,而近似焦散可以在更短的时间内提供可投入使用的图像。
薄半透明着色模型
薄半透明(Thin Translucency) 着色模型可以用于对具有近似焦散的厚玻璃进行适当着色的半透明投影,获得上物理准确的结果。
点击查看大图。
需要注意一点,每个界面都被视为独特的玻璃窗格,这意味着着色器不会计算折射,并且对象看起来更像是气泡而不是立体几何体。
颜色吸收
采用半透明混合模式和非单位折射参数的材质会渲染成固体玻璃效果。你可以使用材质图表中的 吸收介质(Absorption Medium) 材质输出节点,控制透过玻璃的颜色(也被称为"Beer定律")。这个功能只适用于路径追踪器,因为它需要通过多次反弹追踪射线颜色的状态。
这个材质示例展示了如何控制路径追踪器中的吸收。
设置RGB颜色时,如果颜色值接近 1 ,则不会显示吸收。
上述示例中,材质使用 透射率颜色(Transmittance Color) 来控制当前的吸收量。指定的颜色经过规范化,会在经过100个距离单位后达到。要改变这个距离,使用下面的公式 透射颜色 = 颜色 ^ (100/距离)
。
|
|
|
|
---|---|---|---|
Absorption: 0x |
Absorption: 1x |
Absorption: 10x |
Absorption: 100x |
能量保留
虚幻引擎5中,能量保留可以减少金属和玻璃材质的高光光泽中的能量损失。
你可以在项目设置中的 "引擎 > 渲染 > 材质" 部分中打开能量保留。
为了保持向后兼容性,该功能目前默认是禁用的。在未来引擎版本中,该功能预计将默认启用。
粗糙面的光透射和反射
路径追踪器的独特之处在于,除了粗糙面反射之外,它还支持渲染粗糙面透射,而对于路径追踪器,这些着色器参数会耦合在一起。
在下面的示例中,玻璃材质的粗糙度值会发生变化,以便展示近似焦散、反射粗糙度以及它对投射的半透明阴影的影响。
实用的控制台变量
以下是在使用路径追踪器时启用的一些实用的控制台变量。
控制台变量 |
说明 |
---|---|
|
使所有光源对摄像机光线可见。此功能默认禁用,以便匹配引擎的基于光栅的模式,但它有助于了解光源的建模方式以及发现光源重叠的情况。 |
|
这会向视图添加小进度条,显示逐像素配置采样的进度。累加完成后进度条会自动隐藏。这不会影响使用影片渲染队列的渲染,可以安心使用。 |
|
此选项可用于快速切换降噪器的开关状态(假设当前采样累加已完成)。与后期处理体积(Post Process Volume)设置不同,更改此设置不会导致累加重新启动,并且可用于快速比较启用和不启用降噪的渲染帧。 |
常见问题
使用HighResShot捕捉聚合路径追踪图像
使控制台变量 r.HighResshotDelay
等于场景中当前活跃的 Samples Per Pixel 。验证是否正确捕获输出的方法是将 r.PathTracing.ProgressDisplay
设置为1,如果捕获的图像中没有进度条,说明采样积累已完成。
在运行时启用路径追踪器
路径追踪器可以在运行时使用(需要平台支持)。使用控制台命令 show PathTracing
来开关游戏视口中的路径追踪器。在蓝图中,你可以使用 Execute Console Command
来实现。
避免在Windows上出现"D3D设备被移除崩溃"导致的超时延迟
Windows试图通过限制GPU内核占用的时间来保持系统的响应速度。如果是某个资源密集型的进程,比如基于蛮力算法的路径追踪,这个限制可能会被更频繁地发生(特别是在低端GPU上);或者,当光照模拟变得过于复杂而无法在合理时间内完成时,也会出现此问题。
引擎暴露了一些控制台变量,可用于控制同一时间执行的工作量。不过,这些变量如果设置不当会降低整体性能。建议使用 stat gpu
命令来查看整体性能。
r.PathTracing.DispatchSize
用于控制路径追踪渲染的最大宽度和高度(单位是像素)。如果这个值低于你的视口或图像分辨率,渲染可能会分几步进行,而这会增加Windows验证GPU是否有反应的次数。默认值是2048。r.PathTracing.FlushDispatch
控制路径追踪过程中刷新命令列表的频率。设置为1可以让Windows有更多机会来验证GPU是否有反应。默认情况下设置为2。
在某些极端情况下,系统可能无法保持良好性能并避免崩溃。在这种情况下,可以试着改变Windows的超时限制设置。请参见如何修复GPU驱动崩溃。
在某些包含毛发的场景中,有可能会出现加速结构(BLAS)超时的情况。在这种情况下,请将 r.HairStrands.RaytracingProceduralSplits
的值降低到 4 。
实例在路径追踪视图中消失
在路径追踪中,硬件光踪的默认剔除实现可能过于激进,因为光线追踪还被用于处理摄像机可见性。如果在切换到路径追踪视图时,实例出现缺失,可以尝试将 r.RayTracing.Geometry.InstancedStaticMeshes.Culling
设置为 0 。
将路径追踪器用于启用了Nanite的网格体
对于启用了Nanite的网格体,我们提供了原生路径追踪的试验性支持,可以使用 r.RayTracing.Nanite.Mode 1
启用。此模式使用Nanite流送系统动态准备光线追踪的网格体,保留的细节比回退网格体可能实现的细节要多得多。
路径追踪器还支持使用启用了Nanite的网格体回退网格体进行表示。回退网格体会使用源网格体中一定百分比的三角形来表示,但会导致启用了Nanite的网格体在场景中的细节更少。通过调整 回退三角形百分比(Fallback Triangle Percent) 和 回退相对误差(Fallback Relative Error) ,可在静态网格体编辑器中增加回退网格体的细节。
如需详细了解如何配置这些设置,请参阅Nanite文档的"回退网格体(Fallback Mesh)"小节。
启用对多个GPU的支持
需要Windows 10版本2004或更高版本才能使用多个GPU。
NVIDIA的可扩展链接接口(SLI)技术可将多个NVIDIA GPU链接在一起,从而让用户使用多个GPU(mGPU)计算光照。这可提高使用核心硬件光线追踪功能(例如路径追踪器和GPU Lightmass)渲染场景所需的处理能力。
通过以下方式启用对多个GPU配置的支持:
将GPU与NVLink网桥连接,并在NVIDIA控制面板中启用SLI。
传递命令行参数
-MaxGPUCount=N
,其中N是可用GPU数量。例如,-MaxGPUCount=2
。打开编辑器后,使用控制台变量
r.PathTracing.MultiGPU 1
启用多GPU支持。你还可以将此控制台变量添加到 [虚幻引擎根目录]/Engine/Config 的[/Script/Engine.RendererSettings]
下的 DefaultEngine.ini 文件。
打开编辑器后,你可以检查 输出日志(Output Log) ,确认多GPU模式已启用。查找 LogD3D12RHI: Enabling multi-GPU with 2 nodes
。