Shader语法易错知识点总结

本文详细介绍了Unity Shader编程中的关键语法,包括结构体、函数定义的规则,以及CG代码段内变量声明的注意事项。深入解析了Unity内置的转换矩阵与函数,如法线空间转换、坐标空间转换等,为读者提供了丰富的Shader编程实战经验。

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,模型空间坐标计算视向量

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值