最前面に表示するUnlitシェーダー
VRのUI的なものにUnlit/Textureを適用したQuadを使うことはよくあると思いますが、これを常に最前面に表示したい。オブジェクトに隠れて見えなくなるのを防ぐ。
こちらの記事が参考になります。
Create>UnlutShaderを作る
Tagsがあるあたりにこれを書く
Tags { "RenderType"="Opaque" "Queue"="Geometry+5" }
ZTest Always
こんな感じ
全文
そしてUnlitからさっき作ったシェーダーを選ぶと・・・
一応Sphereよりは手前に出た。(VRMモデルには効かなかった)
元
このシェーダーを適用したもの同士で手前を争わせたいときは
"Queue"="Geometry+5"
の5の数字の部分を大きくしたほうが手前に出た。
WorldSpaceのCanvasを最前面に表示する
上のShaderよりも何よりも手前にWorlsSpaceに設定したuGUIのCanvasを手前に描画したい。
WorldSpaceにするとオブジェクトとして扱われるから、重なったらCubeとかの後ろに描画される。Order in LayerはUI同士でしか効果がない
2D画面固定のものはOverlayとかしたらいいけど、VRで追従するUIなのでWordSpaceを使う。
こちらの記事で同じ悩みを解決されていた
・・・がCamera二つ用意する方法かーやっぱりそれしかないのか~
UI描画用のカメラはDepth Only、UIのみ映す、DepthをMainCameraより大きく
MainCameraはUI描画しない
ちなみにこれをするとVRTKのポインターがCanvasの背景に描画されてしまう。
ということでこれを使うのは諦める。
まあそんなに求められているわけではないしな・・・