Choose your operating system:
Windows
macOS
Linux
因为XR的渲染要求极高,所以虚幻引擎(UE)引入了专用于XR的多种性能优化和新渲染模式。以下文档将介绍这些功能以及如何在UE XR项目中使用这些功能。
可变速率着色和固定注视点渲染
可变速率着色(Variable Rate Shading,VRS) 是较新的GPU才支持的功能,它提供各种方法来调整一个或多个渲染目标中像素的着色速率。任何设置中的默认着色率都是1:1,也就是说1次像素着色器调用应用于屏幕上的1个目标像素。如果采用VRS,则可以指定其他着色率,具体包括1x2、2x1、2x2、2x4、4x2和4x4。举例来说,对于2x2着色率,单次像素着色器调用会处理一组2x2像素(4个像素),而对于4x4,单次像素着色器调用会处理4x4的像素组(16个像素)。
可以基于每个材质应用着色率,也可以通过着色率图像附件(通过Tier 2 VRS)应用着色率。
固定注视点渲染(Fixed Foveated Rendering) 技术可以利用VR头戴设备中基于图像的VRS来调整目标的着色率,从而降低视图边缘的着色率。因为光学失真,GPU在接近图像边缘的位置会丢失越来越多的像素细节,所以通过应用距离图像中心越远着色率越低的VRS图像,可以提高性能,而可以感知的图像质量退化却很小。
固定注视点使用通过计算着色器生成的附件:
两侧的中心(黑色)区域对应每个立体视图的中心;越暗的区域着色率越高,黑色是全着色率(1x1,每像素调用一次像素着色器),在x和y轴上都是深红色为半速率(2x2,每4个像素调用1次像素着色器),略浅的红色为四分之一速率(4x4,每16个像素调用1次像素着色器)。
对基础通道和透明通道应用VRS附件后,其初步结果显示很有潜力。目前这仍处于概念验证阶段,它可以应用于除基础通道和透明通道以外的其他地方。
项目设置
要访问VRS设置,请从主菜单转到 编辑(Edit)> 项目设置(Project Settings)。然后,在 项目设置(Project Settings) 窗口中,转到 引擎(Engine)> 渲染(Rendering)> VR。
控制台变量
你可以使用以下控制台变量:
变量 |
描述 |
---|---|
r.vrs.Enable |
跨引擎启用或禁用VRS(基于材质的VRS和任何基于图像的活动VRS)。 |
r.VRS.EnableImage |
仅启用或禁用基于图像的VRS。如果已启用和支持每材质VRS,它仍将起作用。 |
vr.VRS.HMDFixedFoveationLevel |
HMD 固定注视点渲染质量和性能设置。 |
vr.VRS.HMDFixedFoveationDynamic |
启用或禁用是否应根据GPU使用情况调整固定注视点级别。 |
已知限制
仅适用于支持DirectX 12和VRS Tier 2的Windows设备、支持Vulkan和VK_KHR_fragment_shading_rate扩展的Windows设备以及Oculus Quest。
与NVIDIA的DLSS不兼容。
目前不支持眼球追踪中心点渲染。
实例化立体
引入了实例化立体渲染(Instanced Stereo Rendering)以帮助减少XR在UE中的性能影响。通过选中 编辑(Edit)> 项目设置(Project Settings)> 引擎(Engine)> 渲染(Rendering)> VR 下的 实例化立体(Instanced Stereo) 选项,可以启用该功能。
点击图片查看大图。
启用 实例化立体(Instanced Stereo) 渲染后,需要重新启动引擎并重新编译着色器。 基础通道和Early-Z通道适用于静态网格体、骨骼网格体、Sprite粒子和启用了该功能的网格体粒子(串行和并行渲染路径)。 实例化立体(Instanced Stereo) 目前可在PC(DirectX)和PS4上运行,在最初的4.11版本之后支持其他平台。 下面的视频展示VR中的标准立体渲染与VR中的实例化立体渲染。
移动设备的多视图支持
某些(受支持的)移动设备现在可以支持VR多视图。移动多视图类似于可用于桌面PC的实例化立体渲染,通过在移动设备的CPU上为立体渲染提供优化路径来执行工作。要启用此功能,需要执行以下操作:
此功能尚处试验性质,仅适用于基于Mali的新型GPU。随着此功能的成熟,以及对更多移动设备提供支持,此警告将删除。
在主工具栏(Main Toolbar)中,转到 编辑(Edit) > 项目设置(Project Settings),打开编辑器的项目设置(Project Settings)。
然后,转到 引擎(Engine) > 渲染(Rendering) > VR,然后查找 移动多视图(Mobile Multi-View) 选项。
启用移动多视图(Mobile Multi-View)选项,然后重新启动虚幻引擎使更改生效。
要使此功能正常工作,需要设置Android构建设置,如下所示:
确保在 Android > 构建(Build) 分段中启用了 支持OpenGL ES2(Support OpenGL ES2)。
确保 移动HDR(Mobile HDR) 和 实例化立体渲染(Instanced Stereo Rendering) 都被禁用。
目前,移动多视图仅适用于基于Mali的新型GPU。
如果打包的项目启用了这个功能,但是没有兼容的GPU,它会在运行时被禁用。
前向渲染
虚幻引擎默认使用延迟渲染器,因为它的功能最全面,渲染功能更多。 然而,延迟渲染器存在一些权衡,可能不适用于所有 VR 项目。 前向渲染 提供更快的基线和更快的渲染通道,可在 VR 平台拥有更好的性能。 前向渲染不仅速度更快,相较于延迟渲染器它还拥有更多抗锯齿选项,带来更为清晰明快的显示效果。
有关此功能的更多信息,请参阅前向着色渲染器文档。
性能分析
要追踪对VR来说性能成本过高的资产,需要在项目的整个生命周期内尽可能多地分析项目在CPU和GPU上的操作。
GPU分析(GPU Profiling) ——要激活GPU分析器,只需在运行项目时同时按 Ctrl + Shift + ,(逗号键)。按下这些键后,会出现一个新窗口,外观类似于下图所示。
GPU分析(GPU Profiling) ——分析项目在CPU上的操作比对GPU的分析更复杂。要了解有关如何执行分析的更多信息,请参阅性能分析器文档。
后期处理设置
因为XR的渲染要求极高,许多默认启用的高级后期处理功能应该被禁用,否则项目 性能可能受到影响。要在项目中完成此操作,需要执行以下操作。
如果关卡中还没有后期处理(PP)体积,请添加它。
选择PP体积,并在 后期处理体积(Post Process Volume) 分段中,启用 无限范围(无边界)(Infinite Extent (Unbound)) 选项,以便将PP体积中的设置应用于整个关卡。
![Enable unbound option for the post process volume(enable-unbound-post-process-volume.png)
展开 后期处理体积(Post Process Volume) 的 设置(Settings),然后通过启用该属性浏览每个分段,从而禁用所有活动的PP设置;单击相应设置,将值从默认值(通常为1.0)设置为 0,从而禁用该功能。
执行此操作时,无需点击每个分段并将所有属性设置为0。而应该首先禁用真正起重要影响的功能,如镜头光斑(Lens Flares)、屏幕空间反射(Screen Space Reflections)、临时抗锯齿(Temporal AA)、SSAO、泛光(Bloom)以及其他任何可能对性能有影响的功能。