UnityのShaderテンプレートを追加

UnityのShaderテンプレートに頂点シェーダ/フラグメントシェーダ(Vertex/ Fragment Shader)を追加してみた。

位置

うちのMacの場合、スクリプトのテンプレートファイルは以下のフォルダにあった。

/Applications/Unity/Unity.app/Contents/Resources/ScriptTemplates/

テンプレート内容

冒頭のプロパティ部分はオリジナルのまま、処理部分をUnity公式サイトの シェーダー: 頂点およびフラグメントプログラム のサンプルと合成する。

Shader "Custom/#NAME#" {
    Properties {
        _Color ("Color", Color) = (1,1,1,1)
        _MainTex ("Albedo (RGB)", 2D) = "white" {}
        _Glossiness ("Smoothness", Range(0,1)) = 0.5
        _Metallic ("Metallic", Range(0,1)) = 0.0
    }

    SubShader {
        
        Pass {
        
            CGPROGRAM
            
            #pragma vertex vert
            #pragma fragment frag
            #include "UnityCG.cginc"
            
            struct v2f {
                float4 pos : SV_POSITION;
                fixed3 color : COLOR0;
            };
            
            v2f vert (appdata_base v)
            {
                v2f o;
                o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
                o.color = v.normal * 0.5 + 0.5;
                return o;
            }
            
            fixed4 frag (v2f i) : SV_Target
            {
                return fixed4 (i.color, 1);
            }
            ENDCG
            
        }
    }

    FallBack "Diffuse"
}

ファイル名

保存ファイル名で動きが変わる。試行錯誤して"(ソート用文字列)-(メニュー表示名)-(作られるファイルの名称部分).(作られるファイルの拡張子部分).txt"と分かった。

少しずつ保存名を変えて違いを試す。

A.フォーマット通り

83A-VFShader-NewVFShader.shader.txt

B.拡張子部分なし

83B-VFShader-NewShader.txt

C.メニュー表示名部分なし

83C-VFShaderNewShader.shader.txt

f:id:shady:20150618095849j:plain

メニュー

f:id:shady:20150618095907j:plain

Create時に表示されるコンテキストメニュー。メニュー表示名部分がないのでソート用文字列部分が表示されている。

作成されるファイル

f:id:shady:20150618100223j:plain

作成されたファイル。上からB(拡張子が付かないのでテキストファイルと同じ扱いになってしまう)、A(表示、動作ともに正解)、C(動作はOKだがファイル名がナニ)