实时光线追踪

虚幻引擎4中的光线追踪的概述。

Windows
MacOS
Linux

RayTracingBanner

电影、电视和可视化领域长期使用光线追踪技术渲染照片般逼真的影像,但这种技术需要功能强大的计算机,而且渲染每一帧图像都很花时间。对于电影和电视,可能要花费许多个小时乃至许多天来渲染出高质量的影像序列,但是最终结果可以产生逼真的3D内容,能够与实拍影像无缝地混合在一起。对于建筑可视化公司,光线追踪意味着创作出美丽的渲染效果,可以供汽车业展示,也可展示内容丰富的家居或办公楼在一切完工时的景象,并且得到逼真的观看效果。  

通过将虚幻引擎4(UE4)的技术与 实时光线追踪(RTRT)相结合,就可以创作出在细微光照效果上能够与许多脱机渲染器相媲美的交互式体验。实时光线追踪可以让影像看起来更自然,制作出面积光源下的柔和阴影、准确的环境光遮蔽、交互式的全局光照等效果。 

虚幻引擎中的光线追踪

UE4中的光线追踪包含两种技术:

  • 一是混合的 Ray Tracer,将光线追踪功能与我们现有的光栅效果相结合。

  • 一是 Path Tracer,用于生成参考渲染器。

Ray Tracer

Ray Tracer能够针对阴影、环境光遮蔽(AO)、反射、交互式全局光照和半透明实时生成光线追踪效果。它使用数量不多的采样配合降噪算法来实现这一点,可以得到在视觉上与真实情况极为近似的效果。例如用于阴影,可以根据与投影表面的距离或光源大小进行柔化,并且做出符合物理规律的接触硬化效果。

传统阴影

光线追踪阴影

Path Tracer

Path Tracer是一款基于物理的无偏性路径追踪器,很适合渲染场景的参考图像。它与脱机渲染器类似,通过连续收集采样来工作,以它目前的状态更适合用于生成场景的真相渲染,而不是最终像素。

要了解更多信息,请参见Path Tracer

在你的项目中启用光线追踪

请按照这些步骤在你的项目中启用光线追踪支持。 

系统要求

操作系统

Windows 10 RS5(构建版1809)或更高版本

请在Windows搜索栏中输入 winver 来确认你的Windows构建版本。

GPU

使用最新设备驱动程序的NVIDIA RTX系列显卡和某些支持DXR的GTX系列显卡。

要了解更多信息,请在此处 参见英伟达网站。

虚幻引擎版本

4.22或更高版本

虚幻引擎渲染路径

延迟路径(请参阅下方的支持功能 部分)

启用DX12和光线追踪

  1. 转到主菜单,使用 文件(File) 菜单打开 项目设置(Project Settings)

  2. 平台(Platforms)> Windows 下面,使用 默认RHI(Default RHI) 下拉菜单选择 DX12

    EnableDX12Mode.png

  3. 引擎(Engine)> 渲染(Rendering) 下面,启用 光线追踪(Ray Tracing)

    ProjectSetting_EnableRT

    要启用光线追踪,必须为项目启用 支持计算皮肤缓存(Support Compute Skincache)。如果尚未启用此设置,你会看到一个消息对话框,询问你是否要立即启用。如果是这样,请单击 是(Yes)
    SupportSkinCache.png

  4. 重新启动 引擎来使编辑器带DX12启动,并为你的项目启用光线追踪。

实时光线追踪功能

光线追踪阴影

光线追踪阴影 为环境中的物体模拟柔和的面积光照效果。这意味着根据光源的大小或光源角度,物体的阴影在靠近接触面的部分会比较锐利,离接触面越远就越柔和且变宽。

使用阴影贴图的光栅阴影

光线追踪的柔和阴影

要了解更多信息,请参见光线追踪设置

光线追踪反射

光线追踪反射(RTR)模拟准确的环境反光,可支持多次反射,在反光表面呈现相互反射效果。

屏幕空间反射

光线追踪反射

与屏幕空间反射(SSR)、平面反射乃至反射探头相比,光线追踪反射可以动态地捕捉整个场景,在反射中可以看到的并不局限于静态捕捉图像或当前摄像机视野中的物体。

要了解更多信息,请参见光线追踪设置

光线追踪半透明

光线追踪半透明(RTT)能准确表现玻璃和液体材质,在透明表面上显示符合物理的正确反射、吸收和折射。

光栅半透明

光线追踪半透明

要了解更多信息,请参见光线追踪设置

光线追踪环境光遮蔽

光线追踪环境光遮蔽(RTAO)准确地对环境光照被遮挡的区域投射阴影,使物体更好地融入环境,例如在角落和墙壁相交处投射阴影,或者为裂缝或皮肤上的皱纹增添深度。

屏幕空间环境光遮蔽(SSAO)

光线追踪环境光遮蔽(RTAO)

与屏幕空间环境光遮蔽(SSAO)相比,RTAO能使物体融入环境,并为场景增加深度,使被间接照明的区域呈现自然的阴影。

要了解更多信息,请参见光线追踪设置

光线追踪全局光照

光线追踪全局光照(RTGI)向未被给定光源直接照射的区域添加实时交互反射光照。

仅使用天空光照

光线追踪全局光照

RTGI在默认情况下是禁用的,目前被视作是试验性质的。要想启用它,可以向场景添加后期处理体积 ,然后启用 光线追踪全局光照(Ray Traced Global Illumination),或者使用控制台变量 r.RayTracing.Globalillumination 1

要了解更多信息,请参见光线追踪设置

使用光线追踪功能

后期处理体积

在场景中使用后期处理体积 来控制光线追踪和路径追踪功能及属性。可以将体积添加到内部和外部的不同区域,从而应用你所需要的功能和质量级别。你可以通过这些体积控制光线追踪反射、半透明、全局光照、环境光遮蔽和Path Tracer。

  1. 模式(Modes) 面板中,找到 后期处理体积(Post Process Volume) 并将它拖入 关卡 中。

    单击查看大图。

  1. 在选中该体积的情况下,查看 细节(Details) 面板中的 渲染功能(Rendering Features),找到可以调节的光线追踪和路径追踪功能及属性。

    单击查看大图。

要了解更多信息,请参见光线追踪设置

光源

Ray Tracer对UE4中可用的所有类型光源都支持柔和区域阴影。

光线追踪阴影:定向光源 | 光源角度:0.5357

光线追踪阴影:定向光源 | 光源角度:2.0

通过调节下列设置来控制阴影柔和度: 

  • 定向光源 上,设置 光源角度(Source Angle)

  • 点光源聚光源 上,设置 光源半径(Source Radius)。 

  • 矩形光源 上,设置 挡光板角度(Barn Door Angle)挡光板长度(Barn Door Length) 来控制阴影柔和度。

要了解更多信息,请参见光线追踪设置

天空光照

天空光照 上,使用 SLS捕捉场景(SLS Captured Scene)SLS指定立方体贴图(SLS Specified Cubemap) 配合光线追踪阴影来捕捉关卡的远端部分,并作为光源应用到场景。选取 投射光线追踪阴影(Cast Raytraced Shadow) 标志以在场景中启用天空光照。  

RT_SkyLight

在此场景中,使用了一个HDRI配合RTGI对场景进行照明。

要使RTGI配合天空光照发挥作用,请使用试验性的控制台变量 r.RayTracing.GlobalIllumination.EvalSkylight 启用RTGI来评估天空的光照。

要了解更多信息,请参见光线追踪设置

光线追踪环境光遮蔽

在场景中使用后期处理体积 控制 光线追踪环境光遮蔽。在 环境光遮蔽(Ambient Occlusion),你可以设置效果的 强度(Intensity)半径(Radius) 来控制其大小和强度。 

光线追踪环境光遮蔽强度:0.75

光线追踪环境光遮蔽强度:1.0

性能与调试

统计GPU

使用控制台命令 GPU Stats 来检查相关的光线追踪GPU性能。你会找到已启用的光线追踪功能的相关信息,并了解在当前视图中为了渲染它们花费了多少帧时间。 

GPUStats1

Stat D3D12RayTracing

使用控制台命令 Stat D3D12RayTracing 来检查相关的光线追踪资源使用情况。

StatD3D12RayTracing

光线追踪调试视图模式

在关卡视口下面,选择 视图模式(View Mode) 下拉菜单,然后选择 光线追踪调试(Ray Tracing Debug) 以选择可用的调试视图模式。 

单击查看大图。

评估降噪器质量

通过执行下列操作来评估不同光线追踪效果的降噪器质量: 

  • 禁用 临时抗锯齿(Temporal Anti-Aliasing)景深(Depth of Field)

    • 这两个设置在虚幻引擎的渲染器中都在线性色彩空间中运行。它们会使用一些HDR颜色加权技巧来避免在阴影和高光之间产生锯齿。

  • 请比较降噪后的逐像素单采样与未降噪的逐像素单采样。 

    • 由于能量差异以及降噪器对阴影暗化过多,结果看起来不正确。但是,由于色调映射器的非线性运算,逐像素单采样看起来会比较明亮。 

    • 为了更好地对比,应该对照未降噪的逐像素 采样来测试降噪后的逐像素 采样。

降噪后的逐像素单采样

未降噪的逐像素多采样

由于信息丢失,降噪后的逐像素单采样是不完美的。但是与未降噪的逐像素多采样相比,结果是一致的。 

此外还要记住,降噪器最多支持每个像素四次采样,这可以提高质量并且更符合未降噪的逐像素多采样结果。

其他调试注意事项

  • 使用命令 r.raytracing.ForceAllRayTracingEffects 可快速启用和禁用场景中的光线追踪。值为0时禁用所有效果,为1时启用所有效果,为-1时将使用之前启用的项目设置。

其他注意事项

材质 

  • 测试材质成本

    • 复杂材质会影响光线追踪功能的性能。使用控制台命令r.RayTracing.EnableMaterials测试性能影响。

  • Ray Tracing Quality Switch Replace节点

    • 使用此节点替换整个材质逻辑,通过简单逻辑降低RTGI、RT反射和RT半透明等功能的开销。此为影响所有光线追踪效果的全局更改。

    • 本例中,法线 逻辑路径渲染以场景中所示方式渲染。光线追踪 路径使用简单逻辑实现光线追踪中如RTGI和反射等效果,其中的纹理、法线和粗糙度的开销可能较高。

      点击查看大图。

  • 逐材质投射光线追踪阴影(Cast Ray Traced Shadows Per-Material)

    • 使用 投射光线追踪阴影(Cast Ray Traced Shadows) 复选框设置此材质是否投射光线追踪阴影。此设置适用于控制指定到几何体材质的特定元素,而不考虑该材质是否应投射光线追踪阴影。

反射

  • 渲染具有多层反射的多次反射时,光线追踪反射开销较高。若无多次反射,内部反射材质将显示为黑色。启用 r.RayTracing.Reflections.ReflectionCaptures 将反射捕捉Actor用作光线追踪反射中的最终反射。

拖动滑块显示单反射RTR、无反射捕捉退却的双反射RTR,和带反射捕捉退却的单反射。

半透明折射率(IOR)

利用光线追踪半透明时,系统会将材质的 高光度(Specular) 值限制在0到1之间,以控制折射率(IOR)。这也是通过真实材质确定IOR的方式。

IOR Specular Value:0.0

IOR Specular Value:0.5

使用以下指南,通过光线追踪的半透明材质来控制IOR:

  • 在后期处理体积中,启用以下设置:

    • 渲染功能(Rendering Features)> 半透明(Translucency),设为 光线追踪(Ray Tracing)

    • 渲染功能(Rendering Features)> 光线追踪半透明(Ray Tracing Translucency),启用 折射(Refraction)

    • 渲染功能(Rendering Features)> 光线追踪半透明(Ray Tracing Translucency),将 最大折射光线数量(Max Refraction Rays) 设为足够高的反射数量,以便看到材质的另一面。例如,一次反射可能不足以看到背后的物体,但多次反射就可以。

使用材质实例来驱动高光度值控制IOR。

天空光照

如无需要,应禁用天空光照贡献的捕捉远距离对象(如天穹)。此设置可节省性能并优化场景。对于UE4自带的 BP_SkySphere,此选项默认禁用,将导致与预期不同的天空反射。启用或禁用 细节(Details) 面板属性中的 在光线追踪中可见(Visible in Ray Tracing) 复选框,可控制对象贡献。

光线追踪功能优化

  • 设置反射和半透明最大粗糙度(Setting Reflections and Translucency Maximum Roughness)

    • 使用 最大粗糙度(Max Roughness) 在材质上设置光线追踪反射的阈值。可在后期处理体积内,或使用控制台命令r.RayTracing.Reflections.MaxRoughness完成此操作。

  • 设置全局照明、反射和半透明的最大光线距离(Setting a Maximum Ray Distance for Global Illumination, Reflections, and Translucency)

    • 这项将设置此类功能的最大光线距离,以降低其在场景中的开销和贡献。

    • 使用控制台设置此类光线追踪功能的 MaxRayDistance 控制台变量。这些功能位于r.RayTracing.*下。

  • RTGI优化(RTGI Optimizations)

    • 现在,屏幕百分比和逐像素采样分别默认为 504。如需将其设为其他值,默认使用其控制台命令进行设置:r.RayTracing.GlobalIllumination.ScreenPercentager.RayTracing.GlobalIllumination.SamplesPerPixel

    • 可使用光源的 影响全局照明(Affect Global Illumination) 属性启用/禁用GI的光照贡献。

光线追踪的几何体考虑事项

  • 带小孔或大量小细节的几何体将影响性能,如植被和栅栏。 

  • 室内环境的渲染慢于室外。

    • 比如,光线从外部射入时,直接光照区域渲染的比间接光照区域快。 

    • 此外还须考虑其他使用中的光线追踪功能,比如反射和半透明

支持的光线追踪功能

此列表旨在提供当前支持功能的概念,并未完整列出 虚幻引擎4.23 支持的光线追踪功能。

功能

支持(是/否/部分)

其他注释

Rendering Path

Deferred

Y

Forward

N

光源类型

定向光源(Directional Light)

天空光照(Sky Light)

点光源(Point Light)

聚光源(Spot Light)

矩形光源(Rect Light)

光照功能

自发光表面(Emissive Surfaces)

部分

支持表面反射,但不发射光线或投射阴影。

光透射(Light Transmission)

半透明阴影视为不透明,表示无彩色阴影或光线穿透材料。

Area Shadowing(区域阴影)

IES Profiles(IES描述文件)

Light Functions(光照函数)

Volumetric Fog(体积雾)

基于图像的照明(IBL)(Image Based Lighting (IBL))

HDRI和天空光照支持此功能。

材质:混合模式

不透明(Opaque)

遮罩(Masked)

安装4.22.1热修复补丁后,将支持遮罩材质

半透明(Translucent)

部分

阴影视为不透明。

材质:着色模型

默认光照(Default Lit)

无光照(Unlit)

部分

遮罩(Masked)

部分

支持投射遮罩阴影。

次表面和次表面轮廓(SubSurface and SubSurface Profile)

预整合皮肤(Preintegrated Skin)

部分

可运行,但未正确光线追踪结果。其使用栅格化流程。

透明涂层(Clear Coat)

双面植物(TwoSided Foliage)

头发(Hair)

部分

可运行,但未正确光线追踪结果。其使用栅格化流程。

布料(Cloth)

部分

可运行,但未正确光线追踪结果。其使用栅格化流程。

材质函数(Material Functions)

双面(Two-Sided)

场景位置偏移(World Position Offset)

部分

支持地形和骨架网格体。

几何体类型

骨架网格体(Skeletal Mesh)

静态网格体(Static Mesh)

几何体缓存(Alembic)(Geometry Cache (Alembic))

地形(Landscape)

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

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

样条(Splines)

程序网格体(Procedural Mesh)

在光线追踪中渲染此类几何体的开销较高。

BSP笔刷(BSP Brushes)

细节等级(LOD)(Levels of Detail)

尚不支持颤动LOD过渡。

视觉效果(VFX)

Niagara

部分

仅支持Sprite。尚不支持条带和网格体。

级联(Cascade)

主机支持

多视图(VR和分屏)(Multi-View (VR and Split-Screen))

计划在4.24中推出。

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

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见