Unity3D內置着色器


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,每個光照會增加一次繪制,性能和物體在屏幕上的尺寸也有關系。
  性能開銷很大,但是可以用來制作一些特殊的效果,比如shadows、normal-mapping、good look specular highlights and light cookies等。
  通常的shader性能開銷排序如下:
  Unlit 不受光
  Vertex Lit 頂點光
  Diffuse 漫反射
  Normal mapped 法線貼圖
  Specular 高光
  Normal Mapped Specular 高光法線貼圖
  Parallax Normal mapped 視差法線貼圖
  Parallax Normal Mapped 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通道定義在物體表面的反射強度。
  任何場景燈光將會增加反射表面的照明。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM