UnityShader中的數學(矩陣)
PS:本文章摘取自《UnityShader入門精要》一書。
對於UnityShader中的數學,向量,標量什麼的在之前的文章中已經有過介紹這裡就不在敘述,這裡重點的說一下矩陣,矩陣是什麼東西,什麼時候要用到矩陣,矩陣的存在能幫我們解決什麼問題,下面就解釋這些:
Shader中使用的矩陣有平移矩陣,旋轉舉證,縮放矩陣,其中平移矩陣和旋轉矩陣比較好理解簡單一點,從名字中就能看出每個矩陣的功能,使用來執行平移,旋轉和縮放的,還有在進行座標的轉換時都會用到矩陣,想了解矩陣的可以直接百度搜索,這裡主要介紹在UnityShader中是怎麼用矩陣來實現我們想要的效果的,對於UnityShader 中的矩陣使用沒有了底層的東西,Unity全都封裝好了供給我們使用,但是還是建議大家去看看矩陣的底層實現,因為我這裡對矩陣只能說是自己會,但是理解還是不是很深,所以就不寫出來了,下面寫出UnityShader中使用矩陣的方法:
UNITY_MATRIX_MVP 把模型空間座標轉換為裁剪空間座標
UNITY_MATRIX_MV 把模型空間座標轉換為觀察空間座標
UNITY_MATRIX_V 把世界空間座標轉換為觀察空間座標
UNITY_MATRIX_P 把觀察空間座標轉換為裁剪空間座標
UNITY_MATRIX_VP 把世界空間座標轉換為裁剪空間座標
UNITY_MATRIX_T_MV UNITY_MATRIX_MVP的轉置矩陣
UNITY_MATRIX_IT_MV 把法線從模型空間座標轉換到觀察空間座標 UNITY_MATRIX_MVP的逆轉置矩陣,逆矩陣
_Object2World 模型矩陣,把模型空間座標轉換到世界空間座標
_World2Object _Object2World的逆矩陣,把世界空間座標轉換到模型空間座標
以上的東西很可能看起來有點蒙,先記住,在之後的文章中會一點一點的用到,上面寫出的就是UnityShader中使用矩陣進行座標空間的轉換,為了方便之後的計算,所有的座標都必須保持在同一座標空間先進行,所以上面的東西很重要,在之後的指令碼中會經常使用。