一、Shader的介紹
Shader(著色器)
Shader是專門用來渲染3D圖形的一種技術,他分為Vertex Shader(頂點著色器) & Pixel Shader(像素著色器)
二、Shader的種類
Shader分三類:
1、HLSL(High Level Shading Language):
微軟的DirectX圖形API繼承的Shader。
2、GLSL(OpenGL Shading Language):
用于OpenGL系列圖形集的Shader。
3、CG(C for Graphics):
一種可以被OpenGL和Direct3D廣泛支持的圖形處理器編程語言。是OpenGL和DirectX的上層語言,CG程序運行在OpenGL和DirectX標準頂點和像素著色器的基礎上的。
Unity所有的渲染都需要shader來完成,內置的著色器超過80個,可以輕松利用其內置的著色器來完成各種畫面效果,并且還提供了自定義shader,方便擴展。Unity使用shaderLab開發語言來組織shader內容,并會針對不同的平臺進行編譯,類似微軟的FX文件或者NAIDIA的CgFX.
三、內建Shader的分類:
1、普通(Normal):用于不透明對象
2、透明(Transparent):用于半透明和全透明對象
3、透明鏤空效果(TransparentCutOut):用于完全透明和完全不透明部分組成(不含半透明部分)的對象,像柵欄一樣。
4、自發光(Self-llluminated shader Family):用于能反射環境立方體貼圖的不透明對象
5、反射(Reflective Shader Family):用于能反射環境立方體貼圖的不透明對象
每個類別下包含若干復雜性各異的shader
四、幾種常用的Shader
1、Bumped Diffuse 漫反射
2、Bumped Specular 法線高光效果
法線高光效果可以讓物體的凹凸效果更加明顯
圖中左邊為漫反射bumped diffuse,右邊為高光、凸凹效果bumped specular
3、StandardShader 標準著色器
StandardShader是基于物理的著色器,也就是說不管你選擇什么樣的貼圖都會與光照產生反應,這些貼圖可以是同一張圖片,Unity會使用必要的資源進行計算。
一個簡單的Shader腳本:
這個shader定義顏色屬性的默認值(1,0.5,0.5,1)_Color(將在Unity3D的材質檢索器中作為主要顏色屬性顯示)。然后一個單一的subshader定義。該subshader組成一個渲染通道,打開頂點照明,并設置了它的基本材質屬性。