Unity的内置着色器文件可以从官网下载
https://unity3d.com/cn/get-unity/download/archive
也可以在安装目录下找到
Mac上
/Applications/Unity/Unity.app/Contents/CGIncludes
Windows上
安装路径/Data/CGIncludes
Unity中一些常用的包含文件
文件名 | 描述 |
UnityCG.cginc | 包含了最常使用的帮助函数、宏和结构体等 |
UnityShaderVariables.cginc | 在编译Unity Shader时,会被自动包含进来。包含了许多内置的全局变量,如UNITY_MATRIX_MVP等 |
Lighting.cginc | 包含了各种内置的光照模型,如果编写的是Surface Shader的话,会自动包含进来 |
HLSLSupport.cginc | 在编译Unity Shader时,会被自动包含进来。声明了很多用于跨平台编译的宏和定义 |
UnityCG.cginc中一些常用的结构体
名称 | 描述 | 包含的变量 |
appdata_base | 可用于顶点着色器的输入 | 顶点位置、顶点法线、第一组纹理坐标 |
appdata_tan |
可用于顶点着色器的输入 |
顶点位置、顶点切线、顶点法线、第一组纹理坐标 |
appdata_full |
可用于顶点着色器的输入 |
顶点位置、顶点切线、顶点法线、四组(或更多)纹理坐标 |
appdata_img |
可用于顶点着色器的输入 |
顶点位置、第一组纹理坐标 |
v2f_img |
可用于顶点着色器的输出 |
裁剪空间中的位置、纹理坐标 |
UnityCG.cginc中一些常用的帮助函数
函数名 | 描述 |
float3 WorldSpaceViewDir(float4 v) | 输入一个模型空间中的顶点位置,返回世界空间中从该点到摄像机的观察方向 |
float3 ObjSpaceViewDir(float4 v) | 输入一个模型空间中的顶点位置,返回模型空间中从该点到摄像机的观察方向 |
float3 WorldSpaceLightDir(float4 v) | 仅用于前向渲染中。输入一个模型空间中的顶点位置,返回世界空间中从该点到光源的光照方向。没有被归一化 |
float3 ObjSpaceLightDir(float4 v) |
仅用于前向渲染中。输入一个模型空间中的顶点位置,返回模型空间中从该点到光源的光照方向。没有被归一化 |
float3 UnityObjectToWorldNormal(float3 norm) | 把法线方向从模型空间转换到世界空间中 |
float3 UnityObjectToWorldDir(float3 dir) |
把方向矢量从模型空间变换到世界空间中 |
float3 UnityWorldToObjectDir(float3 dir) |
把方向矢量从世界空间变换到模型空间中 |
Unity还提供了用于访问时间、光照、雾效和环境光等目的的变量。这些内置变量大多位于UnityShaderVariables.cginc中,与光照有关的内置变量还会位于Lighting.cginc、AutoLight.cginc等文件中。