shader學習筆記三


shader代碼加註釋:

Shader "Custom/cg01" {
	
	SubShader {
		pass
		{
			CGPROGRAM
// Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it uses non-square matrices
#pragma exclude_renderers gles
// Upgrade NOTE: excluded shader from DX11 and Xbox360; has structs without semantics (struct v2f members pos,uv)
#pragma exclude_renderers d3d11 xbox360
			//頂點程序名,缺一不可
			#pragma vertex vert  
			#pragma fragment frag
			 //使用宏定義
			#define MACROFL FL4(fl4.ab,fl3.zy);
			//in 表示引擎的輸入. :後面要帶上語義
			//vert想輸出一個POSITION語義的變量,那必須是float4類型的四階向量
			void vert(in float2 objPos:POSITION,out float4 pos:POSITION,out float4 col:COLOR)
			{
				pos=float4(objPos,0,1);
				//col=float4(0,0,1,1);
				//在cg中,儘管語義不同,但是數據類型相同,可以使用這種方式賦值
				col=pos;
			}
			//unity中創建的默認cube的x頂點座標(-0.5,0.5)y(-0.5,0.5)
			//cvv裁剪,最左邊是-1,中間爲0,最右邊是1
			
			typedef float4 FL4;//就可以用FL4來代替float4
			struct v2f
			{
				float4 pos;
				float2 uv;
			}
			//使用:v2f 0;
			//o.pos=fl4;
			
			//語義COLOR0與COLOR等價
			//inout即使從頂點程序輸入的也可以輸出,輸入過程頂點程序賦值
			void frag(inout float4 col:COLOR)
			{
				//col=float4(0,1,0,1);
				//16位精度浮點值half,爲float精度的一半
				//float r=1;
				//float g=0;
				//float b=0;
				//float a=1;
				//col=float4(r,g,b,a);
				
				//half r=1;
				//half g=0;
				//half b=0;
				//half a=1;
				//col=half4(r,g,b,a);
				
				//fixed r=1;
				//fixed g=0;
				//fixed b=0;
				//fixed a=1;
				//col=fixed4(r,g,b,a);
				
				//fixed1=fixed
				//fixed2=fixed2(1,0);
				//float=>float2/float3/float4  最多到4
				//half=>half2/half3/half4
				//fixed=>fixed2/fixed3/fixed4
				
				//bool bl=false;
				//col=bl?col:fixed4(0,1,0,1);
				
				//float2 fl2=float2(1,0);
				//float3 fl3=float3(1,0,1);
				//float4 fl4=float4(1,1,0,1);
				//fl2.xy意思是fl2的兩個分量
				//float4 fl=float4(fl2.xy,0,1);//xyzw/rgba
				//float4 fl=float4(fl4.wzyx);//取fl4反值
				//float4 fl=float4(fl3.xyzx);//可以重複使用三階元素組成四階
				//float2x2 M2x2=(1,0,1,1);
				//float2x4 M2x4={1,0,1,1,0,1,0,1};//或是float2x4 M2x4={{1,0,1,1},{0,1,0,1}};
				//col=M2x4[0];//取第一行
				
				//float arr[4]={1,0.5,0.5,1};
				//col=float4(arr[0],arr[1],arr[2],arr[3]);
				//int[
				//CG語言
				// htpp://htpp.developer.nvidia.com/Cg/fp20.html       http://http.developer.nvidia,com/Cg/Cg_language.html	
			}
			ENDCG
		}
	} 
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章