昨日に引き続き本日も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に描画を行うためのクラスになります。
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プロパティの内容を統合しているようです。