本系列文章系学习 唐福幸《Unity ShaderLab 新手宝典》的笔记,包含个人理解,如有错误欢迎批评指出
Unity(shader)的包含文件
5 Unity(shader)的包含文件
包含文件里面提供了定义好的常用的变量、结构体、辅助函数、空间变换矩阵,免去我们造轮子的时间,只需要在编写shader的时候引用一下
5.1 包含文件的使用语法
#include “文件名”
例:
{
CGPROGRAM
//...
#include "UnityCG.cginc"
//...
ENDCG
}
在电脑上的位置:
Windows:Unity安装文件夹\Editor\Data\CGIncludes
Mac:Applications\Unit/Unity.app\Contents\CGIncludes\
5.2 UnityCG.cginc
在shader中,UnityCG.cginc是最常用的包含文件,内置许多辅助函数和结构体
5.2.1 顶点着色器输入结构体
以下是常用的结构体
//appdata基础结构体
struct appdata_base {
//包含顶点坐标,顶点法线,第一套UV坐标
float4 vertex : POSITION;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID//最后一行是宏,暂时不用管他
};
//appdata切向量结构体
struct appdata_tan {
//顶点坐标,切向量,顶点法线,第一套uv坐标
float4 vertex : POSITION;
float4 tangent : TANGENT;
float3 normal : NORMAL;
float4 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
//appdata完整结构体
struct appdata_full {
//顶点坐标,切向量,顶点法线,第一套至第四套uv坐标和顶点对应颜色
float4 vertex : POSITION;
float4 tangent : TANGENT;
float3 normal