基础知识总结篇

数学函数相关

normalize(<Vector v>):  归一化向量,返回一个和参数方向相同但长度为1的向量。

dot(<Vector v1>,<Vector v2>):向量点积,返回一个标量,用于求出一个向量到在另一个向量上的投影值、判断两个向量是否垂直、以及两个向量间加载的余弦值(使用两个归一化向量做点积)。

cross(<Vector v1>,<Vector v2>):向量叉积,返回一个与两个向量都垂直的向量,主要用来求解正交向量,即已知两个正交的基向量求第三个基向量,构成一个正交的三维坐标系。

reflect(<Vector in>, <Vector n>):传入入射光方向以及法线方向,返回反射向量方向。

saturate(<Vector v>):将分量的值限制在0和1之间,即当参数小于0时,函数返回0,当参数大于1时,函数返回1,当参数介于0和1之间时,返回参数本身。例如:saturate(float3(-1, 0.5, 3)) -> float3(0, 0.5, 1)

tex2D(<sampler2D tex>,  <Vector2 uv>):根据二维向量uv采样一个二维纹理。

max(a, b) :比较两个标量或等长向量元素,返回 大值。

mul(M, N) :计算两个矩阵相乘,如果 M 为 AxB 阶矩阵,N 为 BxC阶矩阵,则返回 AxC 阶矩阵。下面两个函数为其重载函数。

mul(M, v) :计算矩阵和向量相乘。

mul(v, M) :计算向量和矩阵相乘 。

pow(x, y): x的y次方。

abs(x): 绝对值 。

unity内建函数和宏定义

float4 UnityWorldToClipPos(float3 pos):将世界坐标系下的坐标转到剪裁坐标系下。

float4 UnityViewToClipPos(float3 pos): 将观察(相机)坐标系下的坐标转到剪裁空间下。

float3 UnityObjectToViewPos(float3 pos):将模型坐标系下的坐标转到观察坐标系下。

float4 UnityObjectToClipPos(float4 pos): 将模型坐标系下的坐标转到剪裁坐标系下。

float3 UnityObjectToWorldNorma(float3 norm): 将发现从模型坐标系转到世界坐标系下。

float4 _LightColor0:当前光源的颜色。

float3 _WorldSpaceLightPos0: 世界坐标系下光源的位置。

float3 _WorldSpaceCameraPos: 世界坐标系下相机的位置。

float3 UnpackNormal(flaot3 normalColor):对法线纹理的数据进行还原,将0-1空间映射回-1-1。

float3 WorldSpaceViewDir(float4 v) :输入一个模型顶点坐标,得到世界空间中从该点到摄像机的观察方向。

float3 ObjSpaceViewDir(float4 v) :输入一个模型顶点坐标,得到模型空间中从该点到摄像机的观察方向。

float3 WorldSpaceLightDir(float4 v) : 输入一个模型顶点坐标,得到世界空间中从该点到光源的光照方向(方向没有归一化,且只可用于前向渲染)。

float3 ObjSpaceLightDir(float4 v) :输入一个模型顶点坐标,得到模型空间中从该点到光源的光照方向(方向没有归一化,且只可用于前向渲染)。