Oculus QuestでUniversal Render Pipelineを使用してみる
Oculus QuestでURPを使うまでの簡単な軌跡です。Oculus Questのビルド手順はこりんさん(@korinVR)が完璧にまとめてくれているのでそちらを参照して頂ければと思います。
Universal Render Pipelineについて
詳しくは「凹みさん」が素晴らしくまとめてくれているのでこちらをご覧頂ければ。 tips.hecomi.com
どうやらこれまでのパイプラインはレガシーになりそうなので今のうちに色々調べておいた方が良さそう...というわけでOculus QuestをURPで使用してみたいと思います。
環境に関しては「Unity 2019.3.0f1」を使用してAndroidのビルド環境が既に構築済み前提で進めます。
プロジェクトの作成
テンプレートで「Universal RP」が用意されているのですが余計なアセットも同梱されてしまうので、「3D」で作ります。
Universal Render Pipeline関連のパッケージを追加
Package Managerを開き、以下のパッケージをがしがしと入れていきます。
- Core RP Library
- Shader Graph
- Universal RP
プロジェクトの設定
Switch PlatformでAndroidを選択します。Texture Compressionは「ASTC」を指定しておくと良いです。
次にProject Settings→Player→Other Settingsを開き、「Color Space」を「Linear」に変更します。Oculusの「Build and Upload Android Applications」のページを見るとわかるのですが「ガンマじゃなくてリニア使え、あとあんまポストプロセス使うなよ」的なことが書いてあるので「あっ、はい」と声に出しておきましょう。
そのすぐに下にある「Graphics APIs」から「Vulkan」を削除して、Minimum API Levelを6.0に変更します。
最後にProject Settings→XR Settingを開き下図のように設定します。
Oculus Integrationのインポート
Asset StoreからOculus Integrationをインポートしておきます。インポート結構時間がかかるのでお湯を沸かしてコーヒーでも飲んでゆっくりしましょう。もし奥さんがいるなら話しかけてみてはどうでしょうか(テクスチャの圧縮形式を変更しているのが原因っぽい...?)
完了するとUnity再起動促されるので再起動しておく。今再起動したらこうなった。
負けない。
ビルド時間短縮のためOculus Integrationから使わないアセットは予め削除しておくと良いです。因みに僕は以下を消しています。
- Avatar
- SampleFramework
Universal Render Pipelineの設定を行う
Assets→Create→Rendering→Universal Render Pipeline→Pipeline Assetsを選択します。名前は適当で良いですがここではOculusQuestURPとします。
再度Project Settingsを開き、GraphicsのScriptable Render Pipeline Settingsの欄に先ほど作成したURPのアセットを放り込みます。
適当にビューを作る
Main Cameraを削除しOVRCameraRigをヒエラルキーに追加し以下の設定を行います
- TargetDevice : Quest
- Tracking Origin Type : Floor Level
とりあえず床になるようにPlaneを設定します
ビルドしてみる
段階でビルドしてみる。URPを使用している関係か初回は長いので少し我慢。
これで正常に表示されれば完了です。
まとめ
URP適用自体は非常に簡単。確認したところポストプロセス = Global Volumeも一部使用できた(パフォーマンスは勿論下がるが....)。Shader Graphも勿論使用できる。
気になった & 気づいた点
- Multi Passにすると右目側が描画されない
- VFXGraphを使用すると描画がおかしくなる
何か作るわけではないのですがUnity2019.3 + Universal Render Pipelineで一応Oculus Quest動いた。Shader Graphも使える。「一応」ってのはVFXGraphはなんか謎の上昇気流に吸い上げられた挙動になったのでダメだw pic.twitter.com/WXqxw0xD0d
— さわぐち@Iwate.Unity.Update() (@amidaSawaguchi) 2019年10月1日