Unity3D著色器Shader程式設計入門

2021-06-28 13:04:02 字數 1105 閱讀 4299

自學unity3d也有大半年了,對shader一直不敢入坑,最近看了些資料,以及通過自己的實踐,對shader還是有一點了解了,分享下僅作入門參考。

【狗刨學習網】

因shader是對影象影象渲染的,學習前可以去了解下圖形影象學及gpu程式設計相關的知識。強烈推薦《gpu 程式設計與cg 語言之陽春白雪下里巴人》,這本書網上有電子版。

還有一本是關於unity3d的shader開發的《unity著色器和螢幕特效開發秘笈》該書是《unity shaders and effects cookbook》翻譯過來的。

首先來看下shader實現的效果:

1、新建乙個球體sphere,然後再project中建立乙個材質球material。

2、將新建的材質球賦值給該球體物件的mesh renderer元件的materials中

選擇不同的shader,並調節引數,就可以看到不同的效果了。

3、在project中新建乙個shader,開啟後會預設乙個寫好的shader

[font=新宋體][size=2]shader "custom/testshader" //_maintex【屬性名】"base (rgb)"【屬性描述,將會在unity面板中出現】2d【屬性型別】"white"【預設值】

_alpha("透明度",range(0,1))=0

}subshader //著色器標籤【硬體將通過判定這些標籤來決定什麼時候呼叫該著色器】

lod 200//level of detail

cgprogram//cg語言開始

//申明程式使用su***ce【表面著色器】處理方法為下面的surf,使用lambert光照模型

#pragma su***ce surf lambert 

sampler2d _maintex;//sampler2d型別的變數,名字和屬性中的名字一致,用來接收unity傳入的引數

half _alpha;

struct input ;

void surf (input in, inout su***ceoutput o)

endcg//cg語言結束

} fallback "diffuse"//回滾

}[/size][/font]

著色器 unity3d教程

unity3d教程手冊 如下圖所示,在project面板中新建乙個new material.這樣子就準備好了乙個空白的著色器。它能支援的型別也就在shader中全部顯示出來。不得不說,很好很強大。所有這些pixel 畫素 著色器,預設的diffuse算是資源開銷較小的渲染選擇。隨後那些帶有凹凸貼圖的...

Unity3D內建著色器

unity內部提供了一些可以直接使用的著色器,這些內建著色器包括以下6個方面 1 performance of unity shaders specular 高光,強度和camera的觀察角度有關,main tex的alpha通道可以用來做specular map 反射貼圖,也稱gloss map ...

Unity3d 頂點和片段著色器學習筆記

一 cg頂點程式必須在結構中傳遞頂點資料。幾種常用的頂點結構定義在檔案unitycg.cginc中。在大部分情況下僅僅使用它們就夠了。結構如下 二 如果你想訪問個別的頂點資料,你必須自己宣告頂點結構。結構中的成員必須是屬於以下列表中的 1 float4 vertex 頂點位置 2 float3 no...