VR 性能功能

VR 的各种性能优化。

Windows
MacOS
Linux

由于虚拟现实(VR)的渲染要求极高,因此虚幻引擎 4(UE4)中加入了大量 VR 专用的性能优化和新渲染模式。以下文档将介绍这些功能,以及如何在 UE4 VR 项目中使用这些功能。

VR 实例化立体

当前版本中加入了实例化立体渲染(Instanced Stereo Rendering),以减轻 UE4 中的 VR 性能影响。在 Edit > Project Settings > Rendering > VR 路径下勾选 Instanced Stereo 选项即可启用此功能。

点击查看全图。

启用 实例化立体 渲染后,需要重启引擎并重新编译着色器。功能启用后,可在静态网格体、骨架网格体、sprite 粒子和网格体粒子上使用基础通道和 early-z 通道(串行和并行渲染两者均可)。**实例化立体**当前可在 PC(DirectX)和 PS4 上使用,其他平台的支持将在 4.11 后的版本中陆续呈现。以下视频展示了 VR 标准立体渲染和实例化渲染的对比。

移动 VR 多视图

部分移动设备现支持 VR 多视图。多视图(Mobile Multiview)与台式电脑上使用的实例化立体渲染相似,工作原理是在移动设备的 CPU 上提供一个立体渲染的优化路径。请按以下步骤操作,启用此功能:

因为此功能仍在实验性阶段,它只支持 Mali GPU。待该功能日趋成熟后,将支持更多的移动设备,该警告便会随之消失。

  1. 在主工具栏中前往 Edit > Projects Settings,打开编辑器的 Project Settings。

  2. 然后前往 Engine > Rendering > VR,找到 Mobile Multi-View (Experimental) 选项。

  3. 点击 Mobile Multi-View (Experimental) 选项旁的勾选框将其启用,然后重启编辑器使修改生效。

    点击查看全图。

需要对 Android 版本进行如下设置才能使此功能正常使用:

  • Android > Build 部分中启用 Support OpenGL ES2

  • 禁用 Mobile HDRInstanced Stereo Rendering

  • 当前版本中,多视图功能只支持 Mali GPU。 如打包项目时开启了此功能但 GPU 不兼容,其在运行时将被禁用。

VR 前向渲染

ForwardRenderingBanner.png

虚幻引擎 4(UE4)默认使用延迟渲染器,因为它的功能最全面,渲染功能更多。 然而,延迟渲染器存在一些权衡,可能不适用于所有 VR 项目。 前向渲染 提供更快的基线和更快的渲染通道,可在 VR 平台拥有更好的性能。 前向渲染不仅速度更快,相较于延迟渲染器它还拥有更多抗锯齿选项,带来更为清晰明快的显示效果。

如需了解此功能的详细内容,请查阅 前向着色渲染器 文档。

VR 性能分析

如需找到 VR 项目中开销过高的资源,须在项目生命周期中尽多地对项目在 CPU 和 GPU 执行的操作进行分析。

  • GPU 分析 - 运行项目时按下 CTRL + SHIFT + ,(逗号键) 即可启用 GPU 分析工具。按下组合键后,将出现与下图相似的新窗口。
    VR_GPU_Profiler.png

  • CPU 分析工具 - 项目的 CPU 分析比 GPU 分析更为复杂。请查阅 性能分析工具 文档中的详细操作说明。

VR 后期处理设置

由于 VR 的渲染要求较高,因此需要禁用诸多默认开启的高级后期处理功能,否则项目可能出现严重的性能问题。执行以下步骤完成项目设置。

  1. 在关卡中添加一个后期处理(PP)体积域。

  2. 选择 PP 体积域,然后在 Post Process Volume 部分启用 Unbound 选项,使 PP 体积域中的设置应用到整个关卡。

    VR_PP_Unbound.png

  3. 打开 Post Process VolumeSettings,前往每个部分将启用的 PP 设置禁用:先点击属性,然后将默认值(通常为 1.0)改为 0 即可禁用功能。

    VR_Disable_PP_Settings.png

    执行此操作时,无需点击每个部分并将所有属性设为 0。可先行禁用开销较大的功能,如镜头光晕(Lens Flares)、屏幕空间反射(Screen Space reflections)、临时抗锯齿(Temporal AA)、屏幕空间环境遮挡(SSAO)、光晕(Bloom)和其他可能对性能产生影响的功能。

Tags
Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback