HD レンダーパイプラインの仮想現実 (VR)
HD レンダーパイプライン (High Definition Render Pipeline、HDRP) で VR を使うためには、プロジェクトで VR を有効にしなければなりません。この手順については、Render Pipeline Wizard の VR タブ を参照してください。
Unity の XR 開発に関する詳細は、Unity XR ドキュメントを参照してください。
推奨設定
HDRP は Single-Pass Instanced モードを完全にサポートするようデザインされています。このモードはすべてのプラットフォームで最善のパフォーマンスを実現します。また HDRP はマルチパスもサポートしますが、CPU や自動露出のようないくつかの機能でスピードが遅くなり、問題となる場合があります。特定の機能に問題がある場合は、プロジェクトの HDRP Asset で無効にすることができます。
さらにヒントを学びたい方は、Unite Copenhagen (2019 年 10 月) のプレゼンテーション Maximizing visual fidelity in VR: HDRP support をご覧ください。
サポートされるプラットフォームとデバイス
- PC with DX11:
- 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 plugin を開発中です。 詳細は Unity ブログの Unity XR プラットフォーム更新 と、Unity マニュアルの XR Plugin Architecture を参照してください。 XR Plugin アーキテクチャは OpenVR デスクトップパッケージにリンクしており、さらなる情報と推奨項目が見られます。
解像度コントロール
HDRP でレンダーターゲットの解像度を制御する方法は複数ありますが、HDRP はビルトインレンダーパイプラインを使う標準 Unity で利用可能なすべての方法をサポートするわけではありませんので注意してください。XRSettings.renderViewportScale は HDRP には無効であり、利用すると警告が出ます。代わりに以下の方法を使ってください。
- Dynamic Resolution: 動的解像度システム を使うと、ランタイム時に解像度を変更できます。これはランタイムに解像度を変更した場合に最善の方法です。
- Eye Texture: XRSettings.eyeTextureResolutionScale を変更し、デバイスのバックバッファ解像度を設定できます。これはすべてのレンダーターゲットを再割り当てする、リソース負荷のかかる操作です。
SteamVR はデフォルトで 150% のスーパーサンプリング値を適用しますので注意してください。この値は SteamVR の設定内で変更可能です。
起動後に VR シングルパスを有効にする
今後のバージョンで解決される予定の技術的制限により、アプリケーションが VR モードで直接起動しない場合、以下のコードが必要になります。
private void Awake()
{
UnityEngine.Rendering.TextureXR.maxViews = 2;
}
C# 定義
次の定義を使って、スクリプトにコードを含む/除外することができます。
- ENABLE_VR: エンジンの C++ 側がこの定義を設定し、プラットフォームが VR をサポートするかを示します。
- ENABLE_VR_MODULE: プロジェクトに built-in VR module com.unity.modules.vr が含まれる場合に、Unity はこの定義を設定します。
- ENABLE_XR_MODULE: プロジェクトに built-in XR module com.unity.modules.xr が含まれる場合に、Unity はこの定義を設定します。