Unity3d Shader常用用法

1.Shader 常用语义

1. POSITION:模型空间中的顶点位置,通常是float4类型
2. NORMAL:顶点法线,通常是float3类型
3. TANGENT:顶点切线,通常是float4类型,第四个分量用于存储特殊数值
4. TEXCOORDn:顶点纹理坐标,通常是float2或float4类型,TEXCOORD0、TEXCOORD2···,第一套纹理,第二套纹理···
5. COLOR:顶点颜色,通常是fixed4或float4类型
6. SV_POSITION:裁剪空间中的顶点坐标,结构体中必须包含一个用该语义的变量
7. COLOR0:输出第一组顶点颜色,不必需
8. COLOR1:输出第二组顶点颜色,不必需
9. TEXCOORD0~7:输出纹理坐标,不必需
10. SV_Target: 输出值将会存储到渲染目标(render target)

2. Shader 常用数据类型

1. float4 内置向量 (x, y, z, w);   float4 a; 访问单独成员a.x, a.y, a.z, a.w;
2. fixed4 内置向量(r, g, b, a);   fixed4 c; color.r, color.g, color.b, color.a;
3. float3 内置向量(x, y, z);
4. fixed3 内置向量(r, g, b);
5. float2  内置向量(x, y);
6. _Time: 自场景加载开始所经过的时间t,4个分量分别是 (t/20, t, t*2, t*3);
7. _SinTime:  t 时间的正弦值,4个分量分别是 (t/8, t/4, t/2, t);
8. _CosTime: t 时间的余弦值,4个分量分别是 (t/8, t/4, t/2, t);
9. unity_DeltaTime: dt 是时间增量,4个分量的值(dt, 1/dt, smoothDt,        1/smoothDt),平滑时间,防止时间间隔起伏太大;

3.Shader 常用内置函数

1.abs(num)绝对值;
2. 三角函数;
3. cross(a, b) 两个向量的叉积;
4. determinant(M)矩阵的行列式;
5. dot(a, b) 两个向量的点积;
6. floor(x)向下取整;
7. lerp(a, b, f), 在a, b之间线性插值;
8. log2(x) 基于2为底的x的对数;
9. mul(m, n): 矩阵x矩阵, 矩阵x向量, 向量x矩阵;
10. power(x, y) x的y次方;
11. radians(x) 度转弧度;
12. reflect(v, n) v 关于法线n的反射向量;
13. round(x) 靠近取整;
14. tex2D(smapler, x) 二维纹理查找
15. tex3Dproj(smapler, x) 投影三维纹理查找;
16. texCUBE() 立方体贴图纹理查找;
17. distance() 计算点的距离;

4.Shader 坐标系转换

1. transform.localToWorldMatrix   局部转世界的矩阵;
2. transfrom.worldToLocalMatrix  世界坐标转局部坐标矩阵;
3.  MultiplyPoint, MultiplyPoint3x4 MultiplayVector 来进行坐标变换;
4. shader中 左乘unity_WorldToObject矩阵来实现世界坐标转局部坐标变换;
5. shader中左乘unity_ObjectToWorld矩阵来实现局部转世界的转换; 
6. UNITY_MATRIX_MV 基本变换矩阵 x 摄像机矩阵;
7. UNITY_MATRIX_MVP 基本变换矩阵x摄像机矩阵x投影矩阵;
8. UNITY_MATRIX_V 摄像机矩阵;
9. UNITY_MATRIX_P 投影矩阵;
10. UNITY_MATRIX_VP摄像机矩阵x投影矩阵;
11. UNITY_MATRIX_T_MV (基本变换矩阵 x 摄像机矩阵) 转置矩阵;
12. UNITY_MATRIX_IT_MV(基本变换矩阵 x 摄像机矩阵) 的逆转置矩阵;
13. UNITY_MATRIX_TEXTURE0 纹理变化矩阵;

https://www.bilibili.com/video/av50352048?p=4

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值