SinglePass Instance
Hololens2にVRMモデルを表示するとき、SinglePass Instanceだとエラーが出てビルドできないことがあった。
ビルドできたとしても、VRMモデルだけ右目に表示されていなくて、アバターが一回り小さく見えた。
ここに書いてあった
シングルパスインスタンスレンダリングの一般的な問題の1つは、開発者がインスタンス化用に作成されていない既存のカスタムシェーダーを既に持っている場合に発生します。この機能を有効にした後、開発者は一部のゲームオブジェクトが片目でのみレンダリングされることに気付く場合があります。これは、関連付けられているカスタムシェーダーにインスタンス化に適切なプロパティがないためです。
この問題に対処する方法については、UnityのHoloLensのシングルパスステレオレンダリングを参照してください。
Performance recommendations for Unity - Mixed Reality | Microsoft Docs
解決法1:MultiPass
MultiPassにしたら直った。
同じ人いた
[メモ]
— tofu_box (@BoxTofu) 2019年2月20日
1.VRMのMToonを適用したオブジェクトを
2.single pass モードでビルドしたOculus Goアプリで使うと
さっきのエラーが出るっぽい。
Multi Passでビルドするか
MToonのシェーダーの中に
UNITY_VERTEX_OUTPUT_STEREO
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( )
を追記したらでなくなりました!
解決法2:シェーダーのコード変更
最初に、UNITY_VERTEX_OUTPUT_STEREO を出力構造体に加える必要があります。
次に、UNITY_SETUP_INSTANCE_ID() が呼び出された後に、そのステージの main 関数に UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO() を加える必要があります。
詳しくはここに書いてある
ポストエフェクト
ポストエフェクトをかけたときも、MultiPassじゃないと動かないことがあったので、特殊なシェーダーを使うときは気を付けたほうがいい
最後に
ちなみに片目だけしかモデル表示されてないことに1日気づかなかった。
なんか小さくなったなーとしか思ってなかったよ・・・
案外片目だけでもいいんだね(?)