ゼニガネブログ

ゲーム開発のための小ネタなど。現在はUnityメインでやってます

【Unity】Shaderで使用されるunity_GUIZTestModeについて

TextMeshProを使っていた時に描画周りの設定を弄ろうとシェーダを眺めていたら、unity_GUIZTestModeという見たことのないものが出てきたので調べてみました。

参考リンク

support.unity3d.com

unity_GUIZTestModeとは

unity_GUIZTestModeは名前の通りGUI用のシェーダのZTestに関する値です。
シェーダ内でこんな感じで使われています。

unity_GUIZTestModeの値について

unity_GUIZTestModeの値は描画対象のマテリアルが所属するCanvasのRender Modeの設定によって自動的に変化するというすぐれものでした。

unity_GUIZTestModeの値は以下のように変化します。

Render Mode unity_GUIZTestMode
Screen Space - Overlay Always
Screen Space - Camera LEqual
World Space LEqual

注意点など

・未定義の動作が発生する可能性があるため、手動での値設定は避けましょう。(手動で弄ったろ!と思ってたのでこの情報はありがたかった・・・)
レンダリング直前のRender Modeの設定を参照するので、動的UI構築時に微妙にハマったりするかもしれないので頭の片隅にいれておくといいかも?

 

もし何か特殊な事情でunity_GUIZTestModeを使わないように書き換える場合は、CanvasのRender Modeを確認してから行うのがベターです。
こういう便利な値やPropertiesなどをうまく使って無駄なシェーダを減らしつつ作業していきましょう!