夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLens & Oculus Quest 2で片目が描画されない問題の解消

本日はHoloLensのトラブルシューティング枠です。

HoloLens開発を行っている中で開発中に多くのトラブルに遭遇することがあります。

今回はその中で片目にしか描画されない問題の解消を行います。

〇原因

 この現象はオブジェクトに使用しているMaterialのShaderがシングルパスインスタンシングレンダリングに対応していないため発生しています。

 シングルパスインスタンシングレンダリングとは、Unityによってサポートされているレンダリングパスのことで、主にHoloLens やOculusQuestなどの複眼のデバイスで使用できるものになります。

 こういったデバイスの場合、右目、左目でそれぞれ右目用、左目用と二つの描画を行います。

 この際に二つの独立した処理を行うのではなく、共通している部分を同じ処理にして差異のある処理の見分けることで処理の負荷を下げる仕組みです。

 しかしシングルパスインスタンシングレンダリングはShaderが対応している必要があります。

 対応していないShaderを使用した場合片目のみの描画になります。

〇対処法(HoloLensの場合)

 Unityの[BuildSettings]から[PlayerSettings]を開きます。

f:id:Holomoto-Sumire:20210112210855j:plain

 [xRSettings]から[Stereo RenderingMode]を[multiPath]に切り替えます。 これでシングルパスインスタンシングレンダリングが行われず、左右でそれぞれ描画するマルチパスレンダリングが行われるようになります。

f:id:Holomoto-Sumire:20210112210645j:plain  これで両目に描画されるようになります。

 シングルパスインスタンシングレンダリングは描画の負荷を最適化するにあたり非常に便利な機能ですが、Shaderに依存するため、Shaderを変えるかマルチパスに変えます。    本日は以上です。

〇参考

docs.unity3d.com