高清渲染管线 (High Definition Render Pipeline) 中的虚拟现实
要使用高清渲染管线 (HDRP) 中的虚拟现实 (VR),必须在 Unity 项目中启用 VR。为此,请查看 Render Pipeline Wizard 中的 VR 选项卡。
请参阅 Unity XR 文档,了解关于使用 Unity 进行 XR 开发的更多信息。
建议设置
HDRP 根据设计完全支持 Single-Pass Instanced 模式。此模式可在所有平台上提供最佳性能。 HDRP 还支持多通道,但这在 CPU 上的速度较慢,并且某些功能(例如自动曝光)可能会导致问题。 如果遇到某个特定功能的问题,可以在项目的 HDRP 资源中将该功能禁用。
您也可以观看 Unite Copenhagen(2019 年 10 月)的演示内容以了解更多提示信息:最大限度提高 VR 中的视觉保真度:HDRP 支持 (Maximizing visual fidelity in VR: HDRP support)。
支持的平台和设备
- 搭载了 DX11 的 PC:
- Oculus Rift & Rift S(Oculus XR Plugin、Windows 10、DirectX 11)
- Windows Mixed Reality(Windows XR Plugin、Windows 10、DirectX 11)
- PS4:
- PlayStationVR
- Open VR*
注意:Valve 目前正在针对 2019.3 及更高版本开发他们的 OpenVR Unity XR 插件。 如需了解更多信息,请参阅 Unity 博客中的 Unity XR 平台更新以及 Unity 手册中的 XR 插件架构。 XR 插件架构链接到 OpenVR 桌面平台包,并具有更多信息和建议。
分辨率控制
您可以使用多种方法来控制 HDRP 中渲染目标的分辨率,但是请注意,HDRP 并不支持使用内置渲染管线的标准 Unity 中提供的所有方法。XRSettings.renderViewportScale 在 HDRP 中无效,如果使用它,则会生成警告。请改用以下方法之一:
- 动态分辨率:您可以使用动态分辨率系统在运行时更改分辨率。如果要在运行时更改分辨率,这是最好的方法。
- 眼睛纹理:您可以通过更改 XRSettings.eyeTextureResolutionScale 来设置设备的后台缓冲区分辨率。这是一项资源密集型操作,它会重新分配所有渲染目标。
请注意,SteamVR 将应用默认的 150% 超级采样值。可以在 SteamVR 的设置中更改此值。
启动后启用 VR 单通道
由于某些技术局限性会在更高版本中得到解决,因此如果您的应用程序不能直接在 VR 模式下启动,则需要在脚本中使用以下代码:
private void Awake()
{
UnityEngine.Rendering.TextureXR.maxViews = 2;
}
C# 定义
您可以使用以下定义在脚本中包含或排除代码。
- ENABLE_VR:引擎的 C++ 端设置此定义来指示平台是否支持 VR。
- ENABLE_VR_MODULE:如果您的项目包含内置的 VR 模块 com.unity.modules.vr,则 Unity 会设置此定义。
- ENABLE_XR_MODULE:如果您的项目包含内置的 XR 模块 com.unity.modules.xr,则 Unity 会设置此定义。