夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRTKワイヤフレームShaderを調査する。 その② カスタムシェーダーGUI

昨日に引き続き本日もMRTKのワイヤフレームshaderを読み解いてきます。

〇MRTKワイヤフレームshaderとは?

 MRTKでは[SpatialAwareness]の描画を行うためのデフォルトのshaderとして[Mixed RealityToolkit Wireframe]shaderが提供されています。

 このシェーダーは[MixedRealityWireframeShaderGUI]クラスによってマテリアル上に表記されるプロパティのGIUがカスタムされています。

    FallBack "Mixed Reality Toolkit/Standard"
    CustomEditor "Microsoft.MixedReality.Toolkit.Editor.MixedRealityWireframeShaderGUI"

前回は[GUIContent]の[Styles]クラスの仕組みとmaterial上に表示される要素を見ていきました。

今回も引き続き続きを見ていきます。

〇OnGUI

OnGUIは継承元である[ShaderGUI]クラスの関数をOverrideします。

これはカスタムShaderGUIないでGUIに描画を行うためのクラスになります。

docs.unity3d.com

  public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] props)
        {
            Material material = (Material)materialEditor.target;

            base.OnGUI(materialEditor, props);

            GUILayout.Label(Styles.mainPropertiesTitle, EditorStyles.boldLabel);
            materialEditor.ShaderProperty(baseColor, Styles.baseColor);
            materialEditor.ShaderProperty(wireColor, Styles.wireColor);
            materialEditor.ShaderProperty(wireThickness, Styles.wireThickness);

            AdvancedOptions(materialEditor, material);
        }

OnGUIの第一引数である[MaterialEditor]はShaderLabの[Properties]ブロックを拡張するためのクラスです。

[MaterialEditor]を使用することで実際に定義したinspector上の表記と実際のShaderプロパティの内容を統合しているようです。

UnityEditor.MaterialEditor - Unity スクリプトリファレンス