在我们编程的过程中,会使用到很多内置文件,内置文件里会包含很多函数、变量、宏等等
Unity Shader中也有这些东西
比如在CGIncludes文件夹中,就包含了许多Unity内置文件,里面就包含了一些常用的东西
UnityCG.cginc
里面包含了最常使用的帮助函数、宏、结构体
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 UnityObjectToWorldNomal(float3 norm)——把法线方向从模型空间转换到世界空间中
- float3 UnityObjectToWorldDir(float3 dir)——把方向矢量从模型空间变换到世界空间中
- float3 UnityWorldToObjectDir(float3 dir)——把方向矢量从世界空间变换到模型空间中
内置的变量
这些内置变量大多位于UnityShader Variables.cginc中,与光照有关的内置变量还位于Lighting.cginc、AutoLight.cginc等文件中