さわぐちFMオキーステーション

幸せの鐘が鳴り響き僕はただ嬉しいふりをする

Oculus QuestでUniversal Render Pipelineを使用してみる

Oculus QuestでURPを使うまでの簡単な軌跡です。Oculus Questのビルド手順はこりんさん(@korinVR)が完璧にまとめてくれているのでそちらを参照して頂ければと思います。

framesynthesis.jp

Universal Render Pipelineについて

詳しくは「凹みさん」が素晴らしくまとめてくれているのでこちらをご覧頂ければ。 tips.hecomi.com

どうやらこれまでのパイプラインはレガシーになりそうなので今のうちに色々調べておいた方が良さそう...というわけでOculus QuestをURPで使用してみたいと思います。

環境に関しては「Unity 2019.3.0f1」を使用してAndroidのビルド環境が既に構築済み前提で進めます。

プロジェクトの作成

テンプレートで「Universal RP」が用意されているのですが余計なアセットも同梱されてしまうので、「3D」で作ります。 f:id:amidaMangrove:20191215131633p:plain

Universal Render Pipeline関連のパッケージを追加

Package Managerを開き、以下のパッケージをがしがしと入れていきます。

  • Core RP Library
  • Shader Graph
  • Universal RP

プロジェクトの設定

Switch PlatformでAndroidを選択します。Texture Compressionは「ASTC」を指定しておくと良いです。 f:id:amidaMangrove:20191215132006p:plain

次にProject Settings→Player→Other Settingsを開き、「Color Space」を「Linear」に変更します。Oculusの「Build and Upload Android Applications」のページを見るとわかるのですが「ガンマじゃなくてリニア使え、あとあんまポストプロセス使うなよ」的なことが書いてあるので「あっ、はい」と声に出しておきましょう。

f:id:amidaMangrove:20191215132428p:plain

そのすぐに下にある「Graphics APIs」から「Vulkan」を削除して、Minimum API Levelを6.0に変更します。 f:id:amidaMangrove:20191215133319p:plain

f:id:amidaMangrove:20191215133627p:plain

最後にProject Settings→XR Settingを開き下図のように設定します。 f:id:amidaMangrove:20191215133735p:plain

Oculus Integrationのインポート

Asset StoreからOculus Integrationをインポートしておきます。インポート結構時間がかかるのでお湯を沸かしてコーヒーでも飲んでゆっくりしましょう。もし奥さんがいるなら話しかけてみてはどうでしょうか(テクスチャの圧縮形式を変更しているのが原因っぽい...?) f:id:amidaMangrove:20191215134320p:plain

完了するとUnity再起動促されるので再起動しておく。今再起動したらこうなった。 f:id:amidaMangrove:20191215140118p:plain

負けない。

ビルド時間短縮のためOculus Integrationから使わないアセットは予め削除しておくと良いです。因みに僕は以下を消しています。

Universal Render Pipelineの設定を行う

Assets→Create→Rendering→Universal Render Pipeline→Pipeline Assetsを選択します。名前は適当で良いですがここではOculusQuestURPとします。

f:id:amidaMangrove:20191215140727p:plain

再度Project Settingsを開き、GraphicsのScriptable Render Pipeline Settingsの欄に先ほど作成したURPのアセットを放り込みます。 f:id:amidaMangrove:20191215152821p:plain

適当にビューを作る

Main Cameraを削除しOVRCameraRigをヒエラルキーに追加し以下の設定を行います

  • TargetDevice : Quest
  • Tracking Origin Type : Floor Level

とりあえず床になるようにPlaneを設定します f:id:amidaMangrove:20191215143122p:plain

ビルドしてみる

段階でビルドしてみる。URPを使用している関係か初回は長いので少し我慢。 f:id:amidaMangrove:20191215141945p:plain

これで正常に表示されれば完了です。

まとめ

URP適用自体は非常に簡単。確認したところポストプロセス = Global Volumeも一部使用できた(パフォーマンスは勿論下がるが....)。Shader Graphも勿論使用できる。

気になった & 気づいた点

  • Multi Passにすると右目側が描画されない
  • VFXGraphを使用すると描画がおかしくなる