接下来我们一起来看一下webgl中的几何函数于矩阵函数
第一个几何函数:float length(float x)
此函数会返回矢量x的长度
第二个几何函数:float distance(float p0, float p1)
此函数会返回p0和p1之间的距离,也就是length(p0-p1)
第三个几何函数:float dot(float x, float y)
此函数会返回x和y的点积,也就是矢量中每一个点的乘积相加。
例如a向量为(x1, y1),b向量(x2, y2)那么dot(a, b)就会返回x1*x2+y1*y2
第四个几何函数:vec3 cross(vec3 x, vec3 y)
值得注意的是此函数只允许输入的变量为两个vec3类型,并且会返回一个vec3类型的值,举个例子:
第一个参数a(x0, x1, x2),第二个参数b(y0, y1, y2)
result[0]=x[1]*y[2]-y[1]*x[2]
result[1]=x[2]*y[0]-y[2]*x[0]
result[2]=x[0]*y[1]-y[0]*x[1]
第五个几何函数:float normalize(float x)
此函数会对x进行归一化,保持矢量方向不变但长度为1
第六个集合函数:float faceforward(float N, float I, float Nref)
此函数是法向量反向操作,根据入射矢量N和参考矢量Nref来调整法向量。
如果dot(Nref, I)<0则返回N,否则返回-N
第七个几何函数:float reflect(float I, float N)
此函数会计算反射矢量。入射矢量为I,表面的法向量是N,返回I-2*dot(N, I)*N 需要注意的是此处的N必须已经被归一化
第八个几何函数:float refract(float I, float N, float eta)
根据入射光和介质特性计算折射现象。入射光方向为I,表面法向量为N,介质的折射率为eta,返回被折射后的光线方向。
上面八个几何函数是不是越看到后面的感觉越高深呢?
webgl中的内置函数只提供了一个矩阵函数,我们一起来看一下
我们知道矩阵一般是不会是float,vec2,vec3,vec4类型的,因此呢,矩阵的函数输入的都是矩阵类型的参数也就是mat2,mat3,mat4类型的。
mat2 matrixCompMult(mat2 x, mat2 y)
此函数会将矩阵x和矩阵y逐元素想乘
这个函数对于矩阵的操作还是很方便的
OK以上就是webgl内置函数中的几何函数和矩阵函数