Shader2.0-结构和语义

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/coolbeliever/article/details/81941265

直接上代码,以后不多说了,代码写的很详细

Shader "Hidden/TestStruct"
{
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
	}
	SubShader
	{

		Pass
		{
			CGPROGRAM  //使用CG语法
			#pragma vertex vert  //定义定点着色器的入口函数
			#pragma fragment frag	//定义片段着色器的入口函数
			
			#include "UnityCG.cginc"	//引用函数库,有c,c++基础的应该很熟悉了

			struct appdata
			{
				float4 vertex : POSITION;	//获取模型的顶点信息
				float2 uv : TEXCOORD0;	//高精度的从顶点信息传递到片段着色器
				//fixed4 color : COLOR;	//低精度的从顶点信息传递到片段着色器
				//float3 normal:NORMAL;		//获取法线信息
				//float4 targent:TANGENT; //获取切线信息
				//fixed4 SV_TARGET; //表示输出到哪个相机上去
			};

			struct v2f
			{
				float2 uv : TEXCOORD0;
				float4 vertex : SV_POSITION;	//表示经过mvp矩阵已经转化到屏幕坐标系
			};

			v2f vert (appdata v)//v是从 mesh rendener中传进来的
			{
				v2f o;
				o.vertex = UnityObjectToClipPos(v.vertex);
				o.uv = v.uv;
				return o;
			}
			
			sampler2D _MainTex;

			fixed4 frag (v2f i) : SV_Target	//这里的v2f是顶点着色器的输出值,片段着色器入口的参数
			{
				fixed4 col = tex2D(_MainTex, i.uv);
				// just invert the colors
				col.rgb = 1 - col.rgb;
				return col;
			}
			ENDCG
		}
	}
}

猜你喜欢

转载自blog.csdn.net/coolbeliever/article/details/81941265