マルチビューレンダリング
マルチビューレンダリングとは、ドローコールを2Dテクスチャ配列のレイヤーにインスタンス化する手法を指します。Qtにおいては、特にQt Quick 3D Xrを使用して構築されたVR/ARアプリケーションに関連しています。 左右の目のコンテンツについて、シーンの走査、レンダリングの準備、およびレンダリングパスの記録を個別に実行する代わりに、マルチビューレンダリングではこれらを一度だけ実行し、単一のレンダリングパス内の描画呼び出しをテクスチャ配列のレイヤー0および1にインスタンス化することができます。 頂点シェーダーは、ビューインデックスを示す特別な変数を使用し、それに基づいてビューごとの値を計算します。 カメラ行列など、ビューに依存するデータを含むユニフォームは、両方の目に提供する必要があります。マルチビューレンダリングにより、システムに対するレンダラーの負荷が軽減され、パフォーマンスの向上が期待されます。その代償として、レンダラーとシェーダーは、ビューに依存するデータやテクスチャ配列を適切に扱う必要があることを認識しておく必要があります。
低レベル概要
Qtアプリケーションの開発者は、Qtレンダリングスタックの下位レベルでマルチビューレンダリングがどのように実現されているかを完全に理解している必要はありません。内部の詳細についてさらに詳しく知りたい開発者のために、以下のリンクを用意しています。
3D API におけるマルチビューのサポート
マルチビューレンダリングは、基盤となる 3D API が実行時にこれをサポートしている場合にのみ利用可能です。詳細については、該当する仕様書およびドキュメントを参照してください:
- OpenGL:OVR_multiview1およびOVR_multiview2
- Vulkan:VK_KHR_multiview
- Direct 3D 12:ViewInstancing
- Metal:rendering_to_multiple_texture_slices
Qtのレンダリングハードウェアインターフェース(RHI)におけるマルチビューのサポート
Qt では、3D グラフィックス API は `QRhi ` クラスによって抽象化されています。Qt Quick およびQt Quick 3D は、すべてのアクセラレーテッドレンダリングにおいてこのインフラストラクチャを使用しています。マルチビューレンダリングのサポートに関する詳細な低レベル情報については、以下を参照してください:
Qt Quick におけるマルチビューのサポート - Quick 3D - Quick 3D XR Stack
xml-ph-0000@deepl.internalにおけるマルチビュー対応Qt Quick
Qt Quick はマルチビューに対応していますが、それ自体ではマルチビューレンダリングを使用することはありません。 2D 要素が 3D シーンに埋め込まれている場合、Qt Quick 3D と組み合わせると、マルチビュー・レンダリングのサポートが重要になります。3D シーンがマルチビュー・レンダリング・ターゲットに出力される際に 2D コンテンツを正しくレンダリングするには、2D レンダラーとそのマテリアル(シェーダー)がマルチビューに対応している必要があります。
Qt ベースのアプリケーションの開発者は、多くの場合、この点を考慮する必要はありません。なぜなら、Rectangle 、Image 、Text などのアイテムの基盤となっているQt Quick の組み込みマテリアルは、すべてマルチビューに対応しているからです。
ただし、カスタムマテリアル(QSGMaterial 、QSGMaterialShader )を開発する場合や、ShaderEffect 用のシェーダーを作成する場合で、Qt Quick の3D XRアプリケーション内のVR/ARシーンでその2Dコンテンツを使用することを意図している場合は、カスタムコンテンツはマルチビューに対応している必要があります。詳細については、QSGMaterial::viewCount()を参照してください。
マルチビュー対応のシェーダーの作成は、Qtのシェーダーコンディショニングパイプラインによって可能になります。詳細については、QSBマニュアルの「Multiview」セクションおよびqt_add_shaders()を参照してください。
Qt Quick 3Dにおけるマルチビューのサポート
Qt Quick Qt Quick 3D Xrを使用しない3Dアプリケーション(つまり、VR/ARアプリケーションではないもの)は、現時点ではマルチビューレンダリングを使用できません。 ただし、 3D Xrは同じインフラストラクチャ上に構築されているため、3Dレンダラー自体は完全にマルチビューに対応しています。 や など、すべての標準的な組み込み機能は、完全にマルチビューと互換性があります。旧式のスタンドアロンエフェクトモジュールなど、一部の非推奨機能では、マルチビューレンダリングがサポートされていない場合があります。Qt Quick Model PrincipledMaterial
CustomMaterial やEffect にカスタムシェーダースニペットが含まれる場合、マルチビューレンダリングが有効になっているQt Quick 3D Xrアプリケーションで正しく機能させるためには、アプリケーションが提供するシェーダーコードをマルチビュー対応を念頭に置いて記述する必要があります。その実現方法については、これらの型のドキュメントを参照してください。 これが特に重要な特別なキーワードは、VIEW_INDEX 、INPUT 、SCREEN_TEXTURE 、DEPTH_TEXTURE 、AO_TEXTURE です。
たとえば、以下のポストプロセッシング効果は、INPUT がsampler2D ではなくsampler2DArray である場合にも対応できるよう準備されているため、マルチビューに対応しています:
void MAIN()
{
vec4 c = texture(someTexture, TEXTURE_UV);
// ...
#if QSHADER_VIEW_COUNT >= 2
FRAGCOLOR = c * texture(INPUT, vec3(INPUT_UV, VIEW_INDEX));
#else
FRAGCOLOR = c * texture(INPUT, INPUT_UV);
#endif
}Qt Quick 3D Xrにおけるマルチビューのサポート
基盤となるグラフィックスAPIがマルチビューレンダリングをサポートしている限り、デフォルトでマルチビューレンダリングが有効になっています。これは、可能な限り最高のパフォーマンスを確保するためです。マルチビューレンダリングがサポートされているかどうかを確認するには、multiViewRenderingSupported プロパティを確認してください。
開発やテストの目的では、マルチビューレンダリングの使用を無効にすると便利な場合があります。これを行うには、環境変数 `QT_QUICK3D_XR_DISABLE_MULTIVIEW ` を 0 以外の値に設定します。
マルチビューレンダリングが有効かどうかを確認するには、multiViewRenderingEnabled プロパティを使用します。マルチビューレンダリングを有効にできない場合、この値は常にfalseのままになります。
一般的に、VR/AR アプリケーションでは、マルチビューレンダリングがサポートされている場合は有効にしておき、問題が発生した場合やテスト目的の場合にのみ無効にすることをお勧めします。マルチビューレンダリングは、GPU および特に CPU の負荷を軽減し、パフォーマンスを向上させることが期待されています。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.