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 光照和环境从给予的物体空间坐标和法线