イラスト、モデリング、Unity、VR関連

unityとかblenderとかvr関連の作業メモ

GrabPass,視界ジャックキャンセラー,時止め

 

JackAはGrabAで取得したGrabTextureを使い回して、視界ジャックで表示している。

(GrabTextueはGrabPass { "_GTexA" } のように命名することで、最初に取得されたテクスチャが後続のPassだけでなく、他のマテリアルでも使い回される)

 

GrabPassはそのシェーダが実行される直前のレンダリング結果がテクスチャとして保存されている、と考えればいい。

 

なので、GrabPass取得時のRenderQueueより低い値で描画されたメッシュは表示されない

 

 

視界ジャックキャンセラーと時止め。

 

視界ジャックキャンセラーの原理:

RenderQueueを視界ジャックを表示するシェーダより低い値でGrabPassを名前付きで取得する。これをシェーダAで行う。

 

そのGrabPassテクスチャを視界ジャック表示後より、高いRenderQueueで表示する。これをシェーダBで行う。

 

時止めの原理:

ぶっちゃけ原理は分かってないので発生条件を書いておく。

上記の視界ジャックキャンセラーと同様のシステムを用意。

シェーダAのRenderQueueを2000以下にセット

シェーダBのrenderQueueをTransparent+2147480647にセット

 

シェーダAを-2147483648まで下げてみたが動作は同じ。

 

(VRCではマテリアルのRenderQueueではなく、シェーダに直接書く必要がある)

 

 

時止めが作用せず画面が真っ暗になる場合は、クライアントを再起動すると作用する