はじめに
こんにちは、最近ゲームエフェクトの勉強をしているZeniZeniです。
ゲームエフェクトの見栄えをよくするためにはPostProcessは非常に便利なんですが、LWRP(Light Weight Render Pipeline)と併用して、かつVRでやりたい!となると、かなりつまづくところが多いです。
この記事では、LWRP+PostProcessingStackをVRで使う場合の設定方法と注意点を説明します。
動作環境
まず、現行はどのバージョンでもAndroidではLWRP+PostProcessingStackをVRで使うことはできないようなので、OculusQuestでやりたいと思っている方々はUnityの正式対応を待ちましょう。
その他のPCVRなども、**Unity2019**以上でないと動作はしません。
たとえsceneビューや(実行前の)Gameビューでポストエフェクトがかかっていたとしても、実行中にVR画面から見た映像にはポストエフェクトはかかりません。VRではない(CameraのTarget EyeがNoneになっている)カメラならちゃんと映ります。
またUnity2018以下のLWRP対応したプロジェクトを、Unity2019.1以上のバージョンにアップグレードすると、大量のエラーが発生しどうしようもなかったので、おとなしくUnity2019.xで新規に作成するのが良いと思います。
今回は
- Unity 2019.1.14f1
- Lightweight RP version 5.7.2
でやっていきます。
初期設定
まず新規プロジェクトを作成します。versionは2019.1.14f1。TemplateはVR Lightweight RPです。
そして最初に開かれる下の画像のようなSampleSceneでは、もうすでにLWRP+PostProcessingStackをVRで見ることができます。
Post Process VolumeのBloomの値を変えたりして試してみてください。
注意点
Color Gradingがうまくいかない
ポストエフェクトのColor Gradingは明るさと色調の調整を行うエフェクトですが、HDR(High Dinamic Range)設定をちゃんとしてやらないとうまく動作しません。詳しい説明は【Unite 2017 Tokyo】ゲームの見た目も盛ったら変わる!!!!ヤバい!!ポストプロセス!!入門!!!!!!!!! を見てみてください。
まずEdit>Project Settings>Graphics
のScriptable Render Pipeline Settings
を確認しましょう。
そこで設定されているLWRP assetを選択します。
そこのQualityのHDRのチェックボックスを付けておかないと、HDRが動作しません。
ここでは影の細かい設定なんかも行えます。
またCameraのHDR設定もOffになっていると使えないので、Use Pipeline Settings
にしておきましょう。
一部動作しないエフェクトがある
こちらのPost Processing in the Lightweight Render Pipelineで説明されていますが、以下のエフェクトはLWRP環境では使えません。
- Motion Blurや一時的なアンチエイリアスを含むモーションベクトルベースのエフェクト
- Screen Space Reflectionsといった高価なレンダリング計算が必要なエフェクト
- ターゲットハードウェアがCompute Shaderをサポートしていない場合は Auto-exposureやAmbient Occlusion (MSVO)、Debug Monitorsといったエフェクト
VR環境ではVignetteエフェクトをつけるとよい
上述したPost Processing in the Lightweight Render Pipelineで、VRアプリでは、特定のポストエフェクトが吐き気と見当識障害を引き起こす可能性があります。 テンポの速いゲームまたは高速ゲームで乗り物酔いを軽減するために、UnityではVRにVignette効果を使用することをお勧めします。
と説明されています。
Vignetteとはなんぞやと思うかもしれませんが、要は視界の縁まわりを少し暗くするエフェクトのことです。Unityのドキュメントにわかりやすい説明が書いてあります。
その他Tips
LWRP対応していないアセットを一括でLWRP対応させる。
LWRPに対応していない(LWRPのShaderを使っていない)マテリアルは真っピンクで表示されてしまいます。これはEdit>Render Pipeline>Upgrade Project Materials To LightweightRP Materials
で一括でいい感じに変更してくれます。