欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-30 13:44:43
...

出现这个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
	}
	}
}

 

相关标签: Shader