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
}
}
}
最終看到的效果