🐼

Unity上でSingle Pass Instancedの表示確認

2022/06/02に公開

経緯

vrchatのunity2020化に向けて自作シェーダーのSingle Pass Instanced対応をしようとした中で、unity上での左右の表示確認に手こずったので備忘録

こんな感じにBothEyes表示をしたかっただけなのに・・・

確認したUnityのバージョン

バージョン
2019.4.31f1

結論

XR Plugin ManagementUnity MockHMDを使うのがお手軽でした。
以下新規プロジェクト前提での手順

  1. XR Plugin Managementをインストール(Edit -> Project Settingsから)
  2. Unity Mock HMDにチェック
  1. 左目用カメラセット
    シーンのMain CameraのTarget EyeをLeftにする

  2. 右目用カメラセット
    左目用カメラを複製してTarget EyeをRightにする

  3. 確認
    再生したらBoth Eyesになって左右のカメラの表示を確認

Single Pass Instancedの表示確認

Single Pass Instancedの表示確認をしたいので対応シェーダーを用意
今回はUnityDocumentationにあるデバッグ用シェーダー(XR/StereoEyeIndexColor)を使用

  1. プロジェクトで新規シェーダーをStereoEyeIndexColor内容で作成
  2. 作成したシェーダーでマテリアル作成
  3. シーンにCube配置して作成したマテリアルを適用

意図通り左右で別の色が表示されunity_StereoEyeIndexが機能していることを確認。

Single Pass Instanced非対応のシェーダーを使うと意図通り右目側が表示されない。
(新規のカスタムシェーダーを作成して使用)

備考

この方法にたどり着くまでゲームビューのLeftEyeからRightEyeまたはBothEyesに変更できなく苦戦。
以下フォーラムよりHMDデバイスが接続されていないと変更できないのかもしれない。(今回はMockHMDで対応)
https://forum.unity.com/threads/left-right-both-eyes-view-in-unity-game-view.1061036/

参考

https://docs.unity3d.com/Packages/com.unity.xr.mock-hmd@1.0/manual/index.html

Discussion