夜風のMixedReality

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

MixedReality-GraphicsTools-Unityを触る その② GraphicsTools StandardShader

今回はMRTK3調査枠です。

MRTK3がリリースされたことで間にMRTK3の調査が入ってしまいましたが今回はGraphicsToolsを触っていきます。

前回は導入とサンプルシーンをざっと見ていきました。

redhologerbera.hatenablog.com

今回はShaderを見ていきます。

〇GraphocsTools StandardShader

MRTK3ではv2のMixedReality StandardShaderに代わりGraphics Tools/StandardShaderが使用できます。

代わりといってもMRTK3ではMRTKv2と併用することもできるためMixedRealityStandardShaderと置き換わるものではなく、別のShaderとして開発されています。

中身も構造が変わっており、MRTKStandardShaderではCGPROGRAM~ENDCGで記述され、コアな処理はすべてShaderファイル内で行われていましたが、GraphibsTools/StandardShaderではHLSLPROGRAM~ENDHLSLの記述になっており、さらにコアな処理はGraphicsToolsStandardProgram.hlslに記述されincludeされるようになっています。

これによりMRTKStandardShaderでは1000行を超えていたファイルは300行ほどに収められ可読性が上がっています。

Shader "Graphics Tools/Standard"
{
    Properties
    {
 ...
    }

    SubShader
    {
  ...
        Pass
        {
           ...
            HLSLPROGRAM

           ...
            #include_with_pragmas "GraphicsToolsStandardProgram.hlsl"//Shaderの
処理は別ファイルをインクルードしている。

            ENDHLSL
        }
       ...
    } 
     ...
    }
    CustomEditor "Microsoft.MixedReality.GraphicsTools.Editor.StandardShaderGUI"
}

また URPにも対応してる仕組みとなっています。

GraphicsToolsStandardShader自体はMRTKStandardShader同様 CustomEditorでインスペクタの表示が管理されるようになっており、ShaderGUIUtillsが担当しています。

 これによりShaderプロパティが管理され、チェックボックスにチェックを入れ有効化した時、必要な詳細のプロパティが表示されるようになっています。

今回は以上です。

GraphicsToolsStandardShaderは一見するとMRTKv2のMRTKStandardShaderと同じですが、中身が全く異なっており、使用感などを同じにしながら別のShaderとしてアップデートしていることがわかりました。