Unity ShaderLabでShaderのプロパティ(パラメータ)をインスペクタから設定
できるようにします。今回はInteger型のプロパティを追加します。
手順
まずはShaderのProperties欄に設定したいプロパティを記述します。
Properties { _MyParameter ("MyParameter", Integer) = 0 }
構文は以下です。
「プロパティ名」 ("「表示名」", 「型」) = 「初期値」
プロパティ名はアンダースコアで始まるのが一般的です。
次にCGPROGRAM\~ENDCGの間にプロパティの宣言を記述します。
CGPROGRAM
...
int _MyParameter;
...
ENDCG
マテリアルのインスペクタを確認すると、
追加したプロパティが設定できるようになっています。
コード全文
Shader "Unlit/Property" { Properties { _MyParameter ("MyParameter", Integer) = 0 } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; int _MyParameter; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { return fixed4(0, 0, 0, 0); } ENDCG } } }
リンク
バージョン
- Unity : 2022.3.22f1