【Unity Shaders】最簡單的頂點/片元着色器1

Step 1:打開unity5.6.3並創建一個新的工程

Step 2:新建一個shader文件,然後起一個讓自己高興的名字,比如:PrettyGril

Step 3:把代碼片段粘貼到新建的shader文件中,然後創建一個material並把shader切換成我們自己創建的

這裏再簡單提一下shader的輸入輸出流程:由Mesh傳入頂點數據,進入頂點着色器函數(vert),每個頂點執行一次這個函數,然後通過頂點變換(頂點乘以UNITY_MATRIX_MVP矩陣,這個是untiy內置變量)把頂點信息輸出到片元着色器函數(frag),片元函數是逐個象素執行的,即每個象素都執行一次,它的輸入是頂點函數經過差值後的信息(這個是GPU自己處理的),輸出的就是我們在屏幕上看到的圖像。

 

免費下載工程,關注公衆號《IT木子李》回覆:001 Simple Shaders

//shader的路徑
Shader "Unity Shaders/Shader1" {
	SubShader {
		Pass {
			//shader正文要包含在  CGPROGRAM-ENDCG 語句塊裏
			CGPROGRAM
			//頂點着色器函數名 vert
			#pragma vertex vert
			//片元着色器函數名 frag
			#pragma fragment frag
			//函數的輸入v包含了這個頂點的位置,這是通過POSITION 語義指定的
			//POSITION 將告訴Unity,把模型的頂點座標填充到輸入參數v中
			float4 vert(float4 v : POSITION) : SV_POSITION {
				//返回值該頂點在裁剪空間中的位置
				//SV_POSITION 將告訴Unity,頂點着色器的輸出是裁剪空間中的頂點座標
				//return mul (UNITY_MATRIX_MVP, v);
				return UnityObjectToClipPos (v);//等價於上邊那行
			}

			fixed4 frag() : SV_Target {
				//SV_Target	把用戶的輸出顏色存儲到一個渲染目標(render target)中,這裏將輸出到默認的幀緩存中
				return fixed4(1.0, 1.0, 1.0, 1.0);
			}
			ENDCG
		}
	}
}

最終看到的效果

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