Unity內建6種著色器

2021-07-24 23:37:54 字數 1710 閱讀 6744

unity內部提供了一些可以直接使用的著色器,這些內建著色器包括以下6個方面:

(1)performance of unity shaders

著色器的效能和兩個方面有關:shader本身和render path。

deferred lighting:每個物件都會被繪製2遍,無論其是否受到光照,效能與紋理數和具體的計算過程有關。

vertex lit:每個物件只被繪製一次,效能與紋理數和具體的計算過程有關。

forward rendering:效能和燈光數量有關。

vertex-lit shader in forward rendering path:基於每個頂點計算所有光照的影響,只繪製一遍。

pixel-lit shader in forward rendering path:n rendering passes,每個光照會增加一次繪製,效能和物體在螢幕上的尺寸也有關係。

通常的shader效能開銷排序如下:

unlit 不受光

vertex lit 頂點光

diffuse 漫反射

specular 高光

(2)normal shader family

specular 高光,強度和camera的觀察角度有關,main_tex的alpha通道可以用來做specular map(反射貼圖,也稱gloss map),用於定義物體不同區域的反光率的大 

小。bumped diffuse 法線貼圖漫反射,使用normal map來表現物體表面的細節。

parallax 視差著色器,通過heightmap來實現,用來模擬高度資訊。這個高度資訊可以包含在normal map的alpha通道裡,也可以單獨包含在一張貼圖裡面。

decal 貼花著色器,需要主紋理、貼花紋理(帶alpha),用來對主紋理追加紋理,可以用來做塗鴉。效能比vertex-lit稍大一點,因為它需要多一張紋理。

diffuse detail 漫反射細節著色器,需要主紋理、細節灰度紋理(50%中性灰),細節紋理必須是無縫貼圖(四方連續的)。

細節貼圖是細小的,精緻的紋理在你靠近乙個表面的時候可以察覺,可用於地形細節、木紋、石頭紋理等。

(3)transparent shader family

透明著色器用於實現全透明或者半透明效果。

當多層透明時,會出現一些渲染問題。

(4)transparent cutout shader family

透明鏤空著色器使用的物件有完全不透明的,完全透明的部分(無半透明部分)。像鐵柵欄,樹木,草等之類的東西。

帶有alpha cutoff引數用於控制透明和不透明的範圍。

沒有透明著色器的圖形排序問題,並可以接收和進行投影。

(5)self-illuminated shader family

主要用於發光物體。

一張主帖圖,一張自發光紋理。

發光基於發光紋理的alpha值,alpha為0的不發光,1表示充分發光。不需要任何燈光照射來發光。

任何頂點燈光或畫素燈光將簡單增加更多光照到自發光上。

(6)reflective shader family

一張主帖圖,乙個cubemap用於反射。

主紋理的alpha通道定義在物體表面的反射強度。

任何場景燈光將會增加反射表面的照明。

Unity3D內建著色器

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

unity水面波紋著色器

unity水波紋 轉shader custom animtextureshader 資源圖 numtextiles num tex tiles vector 4,4,0,0 瓦塊的數量 4 4 replayspeed replay speed float 4 紋理移動速度 color color c...

Unity著色器紋理動畫

unity中shader可以採用cg來書寫.此文演示了如何利用紋理座標來分段街區紋理.正常的紋理座標範圍 0.1 座標超出此範圍可以用多種方式來處理,如wrap,clamp,mirror等.假設紋理分為n段,則,每段對應的紋理座標為 0.1 n index 1 n 使用此規則就可以將紋理分段來擷取了...