1、Shader
Shader(著色器)實際上就是一小段程序,它負責將輸入的Mesh(網格)以指定的方式和輸入的貼圖或者顏色等組合作用,然后輸出。
Unity Shader 不等于真正的Shader,Unity Shader 實際上是指Shaderlab 文件,在硬盤上以.shader 為后綴的一種文件。
2、傳統(tǒng) Shader 與 Unity Shader相比
傳統(tǒng)Shader:
僅可以編寫特定類型的Shader,如頂點著色器顏色、片元著色器等
無法設一些渲染設置,如是否開啟混合、深度測試
需要設置著色器輸入和輸出,并注意對應關系
Unity Shader:
可以在同一文件內同時包含著色器和片元著色器的代碼
通過一行特定指令就可以完成設置
需要在特定語句塊中聲明一些屬性,也可以依靠材質修改這些屬性,數據(頂點位置、 uv坐標、法線),也可以直接訪問的方法
3、Shader Lab
Shader Lab 作為一種專門Unity Shader 服務語言,我們可以編寫Shader Lab ?來生成Unity Shader。

4、著色器語言,作為中間語言(Intermediate Language),即交給CPU 可以理解的語言。
Cg(C for Graphic)
HLSL(High Level Shading Language)
GLSL(OpenGL Shading Language)
Cg/HLSL 實際是同一種語言(Microsoft 和NVIDIA合作)
ShaderLab 內部可以嵌套 Cg/HLSL 語言編寫著色器代碼,需要嵌套在命令CGPROGRAM 和ENDCG 之間,代碼如下:
Pass
{
//Pass 的標簽和狀態(tài)設置
CGPROGRAM
//編譯指令
#pragma vertex vert
#pragma fragment frag
//CG 代碼
ENDCG
//其他設置
}