目錄
- 📢前言
- 🍇彩虹球制作
- 🏳??🌈簡單介紹一下Shader結構
- 🏳??🌈彩虹球實體Shader代碼
- 🏳??🌈Unity操作
- 🏳??🌈效果展示
- 💬總結

📢前言
- 前幾天看到 CSDN 的一位 Unity大佬(陳言必行) 在使用工具自己制作Shader的各種特效等等
- 我就被提起了興趣,雖然那位大佬講的我還沒完全學會
- 但是我就自己嘗試做幾個Shader試試看吧
- 那今天就使用Shader來做一個簡單的彩虹球,就當做入門啦~

🍇彩虹球制作
首先打開Unity工程在Project面板上右鍵Create創建一個Shader!
可以看到可以創建的種類有很多,但是我們先隨便選一個就行~

- 創建完之后雙擊打開這個Shader
- 我的是下圖這樣的,看起來跟C#的普通Script差別還是很大的!
- 而且在這里面寫錯了代碼一般是沒有報錯提示的,但是也可以通過下載一些插件來讓他顯示報錯提示!

- 接下來就是把這些代碼全刪掉!
- 是的博主沒打錯字,全刪掉就行了,我們自制的小Shader是不需要這些代碼的!
🏳??🌈簡單介紹一下Shader結構
然后看一下,下面寫的Shader代碼
//設定Shader的路徑和名稱
Shader "MyShaders/shader001"
{
//外部屬性設定
Properties
{
_MainColor("顏色",Color) = (1,1,1,1)
}
//子著色器
SubShader{ Pass { } }
}
首先是設定Shader的路徑和名稱,這個是在Unity選擇Shader時會用到

- 然后有一個關鍵字Properties,其內部是用來進行外部屬性設定的
- 意思就是我們在Unity的Shader面板上可操作的屬性,都是通過在Properties里面設定的
比如上面的代碼中寫了一行
_MainColor("顏色",Color) = (1,1,1,1)
這一行代表的意思就是顏色設定,添加了這一行就可以在Unity端進行設定顏色了

🏳??🌈彩虹球實體Shader代碼
- 更多的Shader結構就不做介紹了,本篇文章本就不是用來學習Shader的
- 因為博主Shader也不是很精通~
- 直接來看一下彩虹球的代碼! 代碼如下:
Shader "MyShaders/VFShader/VSShader002"
{
Properties
{
_Offset("彩虹顯示偏移量",Range(0,1))=0
}
SubShader
{
Pass
{
CGPROGRAM //CG語言開頭
//編譯指令 著色器名稱 著色器函式名稱
#pragma vertex vert //頂點著色器
#pragma fragment frag //片元著色器
//宣告外部屬性
fixed4 _MainColor;
fixed _Offset;
struct v2f
{
//投影空間坐標
half4 clipPos:SV_POSITION ;
//模型空間下的坐標
half4 modelPos:TEXCOORD0;
};
//頂點函式:引數語意系結模型空間坐標,回傳值對應螢屏空間坐標
v2f vert(half4 vertexPos:POSITION)
{
//回傳的結構體物件
v2f o;
// 將頂點從模型空間轉換為投影空間坐標
o.clipPos=UnityObjectToClipPos(vertexPos);
//將模型空間坐標暫存
o.modelPos=vertexPos+fixed4(_Offset,_Offset,_Offset,0) ;
//回傳結果
return o;
}
fixed4 frag (v2f o):SV_TARGET
{
//return fixed4(1,0,0,1) ;
return o.modelPos;
}
ENDCG //---Cg語言結尾
}
}
}
提示
- 在編輯器寫Shader代碼時,是不會報錯的
- 出錯時在Unity界面點這個Shader腳本,會出現紅色報錯提示,按照報錯提示修改即可!

🏳??🌈Unity操作
創建一個Material材質

選中Material將我們創建的Shader添加上,如下圖所示:

然后在場景中隨便創建幾個游戲物件,將Material添加到游戲物件上即可
直接將Material拖動到游戲物件上去就好
🏳??🌈效果展示


💬總結
-
本篇文章簡單介紹了一個彩虹球Shader的小Demo
-
由于博主Shader也是在學習階段,做的東西也勉強看一下哈哈~
-
慢慢一步一步來學習吧!加油奧利給

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/289949.html
標籤:其他
