webgl內建函式--幾何函式與矩陣函式

psychewang發表於2018-10-23

接下來我們一起來看一下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內建函式中的幾何函式和矩陣函式

相關文章