5.属性与语义
一.语义
有时,一些值需要从外界获取,例如从unity中获取,此时需要properties(属性)
Shader "Custom/test5.2.4" {
Properties{
_Color("Color Tint",Color)=(1.0,1.0,1.0,1.0)//使用外部属性的方式,在properties中,属性名称(“unity名称”,属性)=值,注意没有分号
}
SubShader {
pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
fixed4 _Color; //在最开始,声明变量,此变量名称需要与上述的属性名称相同
struct a2v{
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
};
struct v2f{
float4 pos:SV_POSITION;
float3 col:COLOR;
};
v2f vert (a2v v) {
v2f o;
o.pos=UnityObjectToClipPos(v.vertex);
o.col=v.normal* 0.5 +fixed3(0.5, 0.5, 0.5 );
return o;
}
fixed4 frag( v2f i) : SV_Target{
fixed3 c=i.col;
c*=_Color.rgb;
return fixed4(c,1.