Shader编写中遇到的BUG--Shader error in 'First': Parse error: syntax error, unexpected $undefined, expectin

出现这个BUG:

Shader error in 'First': Parse error: syntax error, unexpected $undefined, expecting TVAL_ID or TVAL_VARREF at line 10
查找了一下,排除了着色器函数和顶点着色器函数的语义错误,也排除了结构里面的错误发现都不是,最后是在Properties找到了原因,属性的后面加上了;,删了和;之后就OK了,附上脚本:

Shader "Unlit/First"
{
	//增加属性
	Properties{
		//声明一个存储颜色的属性
		_Color("Color Tint", Color) = (1,1,1,1)//这里不能加;
	}

	SubShader{
		Pass{
			CGPROGRAM
			#pragma vertex vert
			#pragma fragment frag

			//定义一个与属性的名称,类型都相匹配的变量
			fixed4 _Color;

			struct a2v{
				//存储了模型的顶点坐标数据到vertex
				float4 vertex : POSITION;
				//存储了模型的法线方向数据到normal
				float3 normal : NORMAL;
				//存储了模型的第一套纹理坐标数据到texcoord
				float4 texcoord : TEXCOORD0;
			};


			//v2f 的作用就是顶点着色器和屏幕着色器之间传递信息
			struct v2f {
				//存储了模型的定点坐标在裁剪空间中的位置信息到pos
				float4 pos : SV_POSITION;
				//存储了模型的颜色信息到color
				fixed3 color : COLOR0;
			};

			v2f vert(a2v v) {
				v2f o;
				o.pos = UnityObjectToClipPos(v.vertex);
				o.color = v.normal * 0.5 + fixed3(0.5, 0.5, 0.5);
				return o;
			}

	/*	float4 vert(a2v v) : SV_POSITION{
			return UnityObjectToClipPos(v.vertex);
		}*/

			fixed4 frag(v2f i) : SV_Target{
				fixed3 c = i.color;
				//使用_Color属性来控制输出的颜色
				c *= _Color.rgb;
				return fixed4(c,1.0);
			}
			ENDCG
	}
	}
}

猜你喜欢

转载自blog.csdn.net/qq_38186269/article/details/81873632