1. 程式人生 > >Shader2.0-結構和語義

Shader2.0-結構和語義

直接上程式碼,以後不多說了,程式碼寫的很詳細

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
		}
	}
}