シェーダにより,UnityのMaterialインスペクター 上で,アーティストがセットできるパラメータの一覧を定義できます。シェーダでのPropertiesブロックで定義します。
Properties {Property [Property ...] }
プロパティのブロックを定義します。波括弧{}の中で次のように複数のプロパティを定義します。
name ("display name", Range (min, max)) = number
floatプロパティを定義し,インスペクタ上でスライドバーが_min_から_max_として表現。
name ("display name", Color) = (number,number,number,number)
Defines a color property.
name ("display name", 2D) = "name" { options }
Defines a 2D texture property.
name ("display name", Rect) = "name" { options }
長方形(2のべき乗でない)テクスチャのプロパティを定義。
name ("display name", Cube) = "name" { options }
Defines a cubemap texture property.
name ("display name", Float) = number
Defines a float property.
name ("display name", Vector) = (number,number,number,number)
Defines a four-component vector property.
シェーダの各プロパティは name により参照されます(Unityで,シェーダのプロパティ名をアンダースコアで始めるのは一般的)。プロパティはマテリアルインスペクタ上で display name として表示されます。各プロパティのデフォルト値は等号=のあとに記述します。
シェーダの後のほうで,プロパティの値は括弧[]でプロパティネームを記述して参照します:[name]。
Properties {
// properties for water shader
_WaveScale ("Wave scale", Range (0.02,0.15)) = 0.07 // sliders
_ReflDistort ("Reflection distort", Range (0,1.5)) = 0.5
_RefrDistort ("Refraction distort", Range (0,1.5)) = 0.4
_RefrColor ("Refraction color", Color) = (.34, .85, .92, 1) // color
_ReflectionTex ("Environment Reflection", 2D) = "" {} // textures
_RefractionTex ("Environment Refraction", 2D) = "" {}
_Fresnel ("Fresnel (A) ", 2D) = "" {}
_BumpMap ("Bumpmap (RGB) ", 2D) = "" {}
}
テクスチャプロパティの波括弧{}の中の_options_は任意のオプションです。利用可能なオプションは:
// EyeLinear texgen mode example
Shader "Texgen/Eye Linear" {
Properties {
_MainTex ("Base", 2D) = "white" { TexGen EyeLinear }
}
SubShader {
Pass {
SetTexture [_MainTex] { combine texture }
}
}
}