Unity中包含幾個文件,可以用於你的Shader程序,里面包含了預定義的變量和輔助函數。使用它需要用 #include指令
CGPROGRAM // ... #include "UnityCG.cginc" // ... ENDCG
Shader包含的文件在Unity中后綴為.cginc,內置的文件為:
- HLSLSupport.cginc - (自動包含) 為跨平台的着色器編譯宏和定義提供幫助。
- UnityShaderVariables.cginc - (自動包含)常用的全局變量。
- UnityCG.cginc - 常用的輔助函數
- AutoLight.cginc - 照明&陰影功能,如表面着色器在內部使用這個文件
- Light.cginc - 標准表面着色器照明模式,當你寫surface shaders時自動包含。
- TerrainEngine.cginc - 對地形和植被着色器的輔助函數
這些文件在Unity文件夾(
- fixed Luminance(fixed3 c) - 將顏色轉換為亮度(灰度)
- fixed3 DecodeLightmap(fixed4 color) - 從Unity的光照映射中解析顏色(RGBM或dLDR取決於平台)
- float4 EncodeFloatRGBA(float4 v) - 編碼[0 . . 1)浮動范圍為RGBA顏色,用於存儲在低精度渲染目標
- float DecodeFloatRGBA(float4 enc) - 解碼RGBA顏色到一個浮點數
- float2 EncodeFloatRG(float v) 和 float DecodeFloatRG(float2 enc)使用兩個顏色通道
- float2 EncodeViewNormalStereo(float3 n) - 將視圖空間發現編碼為0~1范圍內
- float3 DecodeViewNormalStereo(float4 enc4) - 從enc.xy中解碼為視圖空間法線
正向渲染方法在UnityCG.cginc
這些方法只有在使用正向渲染(forward rendering)時才有用(ForwardBase或ForwardAdd通過類型)。
- float3 WorldSpaceLightDir (float4 v) - 計算世界空間向量(沒有歸一化的)的光,給定對象空間頂點位置。
- float3 ObjSpaceLightDir(float4 v) - 計算物體空間向量(沒有歸一化的)的光,給定對象空間頂點位置。
- float3 Shade4PointLights(....) - 計算照明從四個點光源,光數據緊密到向量,正向渲染使用這個去計算per-vertex(每個頂點)的燈光
頂點照亮方法在UnityCG.cginc
這些方法只有在使用pre-vertex lit
- float3 ShadeVertexLights(float4 vertex, float3 normal) - 計算照明從四個per-vertex 光照和環境從給予的物體空間坐標和法線