unity shader学习历程(1)

Properties语义并不是必须的,我们可以选择不声明任何材质属性。
SubShader中可以进行自定义的渲染设置和标签设置
CGPROGRAM和ENDCG所包围的CG代码片段

#pragma vertex name

#pragma fragment name

我们一般用vert,frag来命名,因为这样乐观。
vertex用来写顶点着色器的代码
fragment用来写片元着色器的代码
UNITY_MATRIX_MVP 当前的模型观察投影模型,用于将顶点/方向矢量从模型空间变换到裁剪空间
UNITY_MATRIX_MV 当前的模型观察矩阵,用于将顶点/方向矢量从模型空间变换到观察空间
UNITY_MATRIX_V 当前的观察矩阵,用于将顶点/方向矢量从世界空间变换到观察空间
UNITY_MATRIX_P 当前的投影矩阵,用于将顶点/方向矢量从观察空间变换到裁剪空间
UNITY_MATRIX_VP 当前的观察投影矩阵,用于将顶点/方向矢量从世界空间变换到裁剪空间
UNITY_MATRIX_T_MV UNITY_MATRIX_MV的转置矩阵
UNITY_MATRIX_IT_MV UNITY_MATRIX_MV的逆转置矩阵,用于将法线从模型空间变换到观察空间,也可用于得到UNITY_MATRIX_MV的逆矩阵
_Object2World 当前的模型矩阵,用于将顶点/方向矢量从模型空间变换成世界空间
_World2Object _Object2World的逆矩阵,用于将顶点/方向矢量从世界空间变换成模型空间

SV_Target是HLSL中的一个系统语义,他等同于告诉渲染器,用用户的输出颜色存储到一个渲染目标,这样讲输出到默认的帧缓存中。片元着色器输出的颜色的每个分量范围在【0.,1】。
纹理坐标来访问纹理,而法线可用于计算光照。
每个顶点都包含一些数据,例如顶点位置,法线,切线,纹理坐标,顶点颜色
SV_POSITION语义是告诉Unity,pos里包含了顶点在裁剪空间中的位置信息
COLOR0语义可以用于储存颜色信息
POSITION语义是告诉Unity,用模型空间的顶点坐标填充vertex变量
NORMAL语义是告诉Unity,用模型空间的法线方向去填充normal变量
TEXCOORD0语义告诉Unity,用模型的第一套纹理坐标去填充texcoord变量

猜你喜欢

转载自blog.csdn.net/qq842447820/article/details/81988429