VRChat ポストプロセスまとめ

ハマりどころ、現行Unityのバージョンは2017.4(※そろそろ2018)なので、googleで検索した結果に注意。検索すると、結構過去バージョンのUnityのマニュアルが出てきてハマる。

 https://docs.unity3d.com/ja/2017.4/Manual/ 

特に注意が必要なのが、過去バージョンであったポストプロセス、ImageEffect(Pro用)が無くなってPost Processing Stackに置き換わっていること

 

ImageEffect(Pro用)はUnityのポストエフェクトの検索結果に良く引っかかるので要注意!!

Post Processing StackはUnityで標準で入っていないので、Unityのドキュメントからは無くなっており、Post Effectをしたい場合は、別途、Post Processing Stack v2をパッケージで入れる必要がある。

さらに、このPost Processing Stack v2はパッケージマネージャーからインストールすると動かないので注意が必要。(パッケージマネージャー対応は2018から)

https://vrcworld.wiki.fc2.com/wiki/Post%20Processing%20Stack

それと、パーティクルライブ(自分のアバターに仕込んで、周りのキャラクターにポストプロセスする場合)とかでポストエフェクトを掛けたい場合は、周りのキャラクターのカメラにポストエフェクトを設定することは出来ないので、視界をジャック(巨大なボックス(またはスフィア)で囲ったり、カメラの前に視界を塞ぐビルボードを設置し、Grubpassでキャプチャした内容をスクリーンスペースでshaderの処理することによってポストプロセスする。Post Processing Stack v2が使えないので、自前でpostprocess処理をshaderで書く必要がある。

もちろん、ワールドや、自分のアバターのローカルカメラでポストプロセスする場合はPost Processing Stack v2が使える

オリジナルのポストプロセスをやりたい場合は、Post Processing Stack v2のカスタムポストエフェクトは無効化されるので、視界ジャックして自前でポストプロセスのshaderを書くしかない

 

対象 視界ジャック+grubpass+自前postprocess shader Post Processing Stack v2
自分のアバターのカメラ ○ ※要アバターにカメラ追加
他の人のアバターのカメラ ×
ワールドのカメラ(すべてのアバター)

基本的にbloomで使用する。DOFはメニューまでぼやけるので正直使えない。カメラによる動的なピント合わせも不可。 視界ジャックしてDOFオリジナルshaderを使うのであれば出来る? パーティクルにはモーションブラーを掛けられない。

github.com

を使えば可能?

ポストプロセスは基本的に全体に掛かるが、bloomの場合1つでもemissoionの設定があると、emisson設定のあるオブジェクトだけにbloomが掛かる。逆に言えばVRChat(Foward Rendering)の場合、emissonの設定を反映するにはpostprocessing stackの設定が必要

http://daiki-evilone.hatenablog.com/entry/2017/03/24/133423

HDRはおそらくHigh Dynamic Rangeのことで、暗いところにある光はより眩しく見えるような人間の目の仕組みに近いレンダリング手法です。Unityマニュアルによると、Forward Renderingモードではイメージエフェクトを用いた時のみ効果が発揮され、Deferred Renderingモードではイメージエフェクト無しでも効果が発揮されるようです。

GPUインスタンシング

https://qiita.com/lycoris102/items/6bf631b35d2769b2d475

パーティクルのGPUインスタンシング対応は2018からなので、meshのパーティクルを大量に発生させると重い。

 

参考 

https://www.pixiv.net/fanbox/creator/4868515/post/403501

https://www.gaprot.jp/gaprot-x-chogiken/xr/unity-lookdev-post-processing-stack-v2