1.结构体定义,后面要加分号;
2.函数定义,后面不加分号;
3.结构体和函数体内的表达式要加分号;
4.CG代码段内的变量声明语句要加分号;
5.属性Properties内的变量声明语句不加分号。
6.属性Properties内的变量名字写错的话,代码不会报错,但①无法通过UI界面控制效果②CG代码段的变量值为默认值,比如颜色值默认为黑色。
①转换法线到视空间:
float3 normal = normalize(mul((float3x3)UNITY_MATRIX_IT_MV,v.normal));
② 转换法线从视空间到剪裁空间
float2 viewNoraml = TransformViewToProjection(normal.xy);//等同于mul((float2x2)UNITY_MATRIX_P, noraml.xy);
内置转换矩阵
1.unity_ObjectToWorld(替换_Object2World,函数UnityObjectToWorldDir返回三阶向量)
2.UNITY_MATRIX_V,(作用同函数UnityWorldToViewPos)
3.UNITY_MATRIX_P,(作用同函数UnityViewToClipPos)
4.UNITY_MATRIX_MV,
5.UNITY_MATRIX_VP,(作用同函数UnityWorldToClipPos)
6.UNITY_MATRIX_MVP,(被函数UnityObejctToClipPos替换)
7.UNITY_MATRIX_T_MV,
8.UNITY_MATRIX_IT_MV,
9.unity_WorldToObject(替换_World2Object,函数UnityWorldToObjectDir返回三阶向量)
内置转换函数
1.UnityObjectToWorldDir,(unity_ObjectToWorld)输入三阶向量返回三阶向量
2.UnityWorldToViewPos,(UNITY_MATRIX_V)世界空间坐标转为视空间坐标
3.UnityViewToClipPos,(UNITY_MATRIX_P)视空间坐标转为裁切空间坐标
4.UnityWorldToClipPos,(UNITY_MATRIX_VP)世界空间坐标转为裁切空间坐标
5.UnityObejctToClipPos
6.UnityObjectToViewPos,(UNITY_MATRIX_V)返回三阶向量
7.UnityWorldToObjectDir,(unity_WorldToObject)输入三阶向量返回三阶向量
8.UnityObjectToWorldNormal,已归一化
9.UnityWorldSpaceLightDir,世界空间坐标计算世界空间光向量
10.WorldSpaceLightDir,模型空间坐标计算世界空间光向量
11.ObjSpaceLightDir,模型空间坐标计算模型空间光向量
12.UnityWorldSpaceViewDir,世界空间坐标计算视向量
13.WorldSpaceViewDir,模型空间坐标计算视向量
14.ObjSpaceViewDir,模型空间坐标计算视向量