UnityのURP(Universal Render Pipeline)を使ってOculus Questに対応してみる

# はじめに

※Unity初心者です。
Oculus Questで快適にキレイな海を表示したくて、URPにたどり着きました。
試したときのメモです。

# Universal Render Pipelineについて

https://docs.unity3d.com/Packages/com.unity.render-pipelines.universal@7.0/manual/index.html

シングルパス対応しているので、いろんなプラットフォームに向いている。（現在すべてのVRにも！）
UniversalRP-VRっていうVR専用のテンプレートがある。（見つかりませんでした）

# 新規プロジェクト作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/80da0597-5939-3d7c-56d1-8936bb54dc39.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/558226f5-5fd9-19a0-ff48-5f34b681498e.png)



# 設定

いつものなので詳細省きます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/f3171a8a-fbb4-b456-ac09-b1a93126154a.png)

PlayerSettings...
CompanyName修正、Valkan消す、MinimumAPIを6.0以上
XRSettings VirtualRealitySupported + Oculus, Single Pass

Switch Platform

# Oculus Integrationインポート

VR,Platformだけチェック付けてインポート

materialがピンクになっているので選択して
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/581ed026-99e4-c8c8-4149-9a3a0849bd92.png)

Edit > Render Pipeline > Universal Render Pipeline > Upgrade Selected Materials to UniversalRP Materials
でURP用のマテリアルに変換する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/fc608cf3-b34e-f69c-1e7d-488e375b05af.png)

# Post-processing

今までのPost-processingは重く、OculusQuestに対応するには難しかったのですが、
URPは後処理になることで高速に処理できるようなので使ってみます。

## Camera設定

OVRCameraRig 配置
Rendering > Post Processing にチェックを入れ、
Anti-aliasing をFXAAにする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/e03ac8d5-0c2d-aff3-9bb2-8217993a0f49.png)

## Global Volume追加

HierarchyでVolume > Global Volumeを追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/febb1f18-17aa-a915-d120-46ebf03bac4a.png)

追加したGlobal VolumeのVolumeでProfileを新しく作るのでNewボタンをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/6fdb23b2-498c-f131-e585-02b77d6b391c.png)

Add OverrideでPost-processingを追加していく

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/0b828032-0ea2-fa67-03fc-f009a0b498e5.png)

モバイルで使いやすいのは下記エフェクト

* Bloom
* Color Grading
* Vignette

早い動きだと酔いやすくなるのでVRでは効果を小さくした方がいいもの

* Chromatic Aberration
* Lens Distortion
* Motion Blur

## Bloom

明るい光を表現する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/0c5298bf-7435-a2ec-38f9-91ec571e9051.png)


**Threshold**　しきい値
**Intensity** 強度
**Scatter**　散布
**Tint**　色合い
**Clamp**　計算に使用する最大強度
**High Quality Filtering**　パフォーマンスに影響を与えるのでVRでは使わない


## Color Adjustments

色を調整する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/c6eb659b-c1c9-018e-1560-07f61ccfff1e.png)

**Post Exposure**　露出後
**Contrast**　コントラスト
**Color Filter**　カラーフィルター
**Hue Shift**　色相シフト
**Saturation**　飽和(すべての色の強度)

## Vignette

端を暗くする

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/fbf0c371-6d95-a7ae-3e00-5bd7144f4cc1.png)

**Color**　色
**Center**　中心(0.5、0.5)
**Intensity**　強度
**Smoothness**　滑らかさ
**Rounded**　丸み

# ビルド

調整難しい

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/11023034-dee9-334f-04f0-ce841c69e54a.png)


# おまけ

Oculus Questは無理ですが、Unityで試せるURPを使ったBoatAttackをインストールしてみます。

https://github.com/Verasl/BoatAttack

1. GitLFSインストール
2. リポジトリクローン(時間かかる)
3. UnityHubでリストに追加して起動

めっちゃキレイ！レースができて、気持ちいいスピードが楽しい！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536619/46048e60-eeff-8cb3-8f27-9ae1ef4b7058.png)