シングルパスインスタンスレンダリングとカスタムシェーダー
ステレオレンダリング
VR とほとんどの MR デバイスでは、Unity シーンをステレオでレンダリングする必要があります。Unity XR は、以下の 2 つのステレオレンダリングモードをサポートしています。
-
Multi-pass (マルチパス): このモードでは、Unity は、それぞれの目に対して 1 つのレンダーパスを実行します。レンダリングループの一部が 2 つのパス間で共有されるため、マルチパスレンダリングは、2 つの固有のカメラでシーンをレンダリングするよりも高速です。マルチパスモードは、既存のシェーダーやレンダリングユーティリティとの互換性が最も高くなりますが、シングルパスインスタンシングモードよりも低速です。
-
Single-pass instanced (シングルパスインスタンシング): このモードでは、Unity は、インスタンス化されたドローコールを使用して、単一のパスでシーンをレンダリングします。このモードは、マルチパスモードと比較して、CPU 使用量が大幅に削減され、GPU 使用量が若干削減させます。
-
Multiview (マルチビュー): 一部の OpenGL および OpenGL ES デバイスでサポートされる、シングルパスインスタンシングレンダリングの一種です。利用可能な場合は、シングルパスインスタンシングがこのオプションに置き換えられます。
注意以前の、単一のレンダーパスを使用してシーンを 2 倍幅のテクスチャにレンダリングする技法は、現在では使用できません。
現在、シングルパスインスタンシングステレオレンダリングは、ほとんどの VR プラットフォームで利用可能になっています。
レンダリングモードの設定
Render Mode (レンダリングモード) の設定は、Project Settings 内の XR Plug-in Management の下にあります。各 XR プロバイダーのプラグインが (サポートされている場合は) 独自の設定を提供します。
レンダリングモードの設定は、以下の手順で行います。
Project Settings を開きます (メニューで Edit > Project Settings を選択します)。
必要であれば XR Plugin Management セクションを展開します。
該当のプロバイダーのプラグインの設定ページを選択します。
-
リストからモードを選択します。

MockHMD プロバイダーのプラグインの Render Mode オプション
注意プラグインによっては、この設定の名前が Stereo Rendeing Mode になることがあります。
シングルパスインスタンシングレンダリングモードのサポート
シングルパスインスタンシングレンダリングモードは、以下のプラットフォームとデバイスでサポートされています。
- Multiview 拡張機能をサポートする Android デバイス
- HoloLens
- PlayStation VR
- 以下の PC デバイス (テザリング)
- デスクトップの DirectX の場合、GPU は Direct3D 11 と
VPAndRTArrayIndexFromAnyShaderFeedingRasterizer 拡張機能をサポートしている必要があります。
- デスクトップの OpenGL の場合は、GPU が以下の拡張機能のいずれかをサポートしている必要があります。
GL_NV_viewport_array2
GL_AMD_vertex_shader_layer
GL_ARB_shader_viewport_layer_array
Single Pass Instanced モードがサポートされていない状態で Render Mode をこのモードに設定すると、レンダリングモードは Multi-pass モードにフォールバックします。
注:
- Unity は、Shader Graph を使用している場合には、ビルトインレンダーパイプラインでのシングルパスインスタンシングのレンダリングをサポートしません。
- Unity は、ディファードレンダリングを使用している場合には、ビルトインレンダーパイプラインでのシングルパスインスタンシングのレンダリングをサポートしません。
シングルパスインスタンスレンダリングとカスタムシェーダー