編寫自定義光照的Shader是很複雜的一件事情,那必須牽扯到很多光照與材質的交互、不同光的類型,不同陰影的選擇,不同的呈現路徑(前向和延遲呈現),而且著色器必須以某種方式處理所有複雜的計算。
在Unity中,表面著色器是一個包裝過的API,使得Surface Shader比低級別的頂點/像素著色器程式更容易編寫。
請注意,他不是一個自定義程式語言,它只是將Vertex/fragment Shader包裝起來的一種API,如果不使用Surface shader,將必須手寫其他包裝過的程式碼。你仍須將Shader寫在:CG / HLSL程式碼區塊中。