Unity Shader中內建的座標空間與轉換矩陣函式
阿新 • • 發佈:2018-11-11
模型空間(model space)也稱為物件空間(object space)或區域性空間(local space)是指以模型原點為原點的座標系。
世界空間(world space)也稱全域性空間(global space)是以世界原點為原點的座標系,世界座標也就是Unity3D裡的絕對座標。
觀察空間(view space)也稱攝像機空間(camera space)是以攝像機為原點的座標系。(這是各座標空間中唯一一個右手座標系)
裁剪空間(clip space)也稱齊次裁剪空間(homogeneous clip space),這個空間對觀察空間裡的渲染圖元進行裁剪,會保留完全在空間內部的圖元,剔除完全在空間外部的圖元,以及裁剪部分在空間內部的圖元,而這塊空間的範圍是由攝像機的視錐體決定的。而使用投影矩陣將頂點轉換到裁剪空間中去,來判斷圖元是否在裁剪空間內。
螢幕空間(screen space)表示的是一個二維空間,是從裁剪空間投影過來的。
從模型空間到世界空間稱為模型變換,從世界空間到觀察空間稱為觀察變換,從觀察空間到裁剪空間稱為投影變換,從裁剪空間到螢幕空間稱為投影對映。
相關數學知識土圭垚㙓數學課(四)空間變換。
Unity內建變換矩陣:
UNITY_MATRIX_MVP | 模型(M)觀察(V)投影(P)矩陣,從模型空間到裁剪空間 |
UNITY_MATRIX_MV | 模型(M)觀察(V)矩陣,從模型空間到觀察空間 |
UNITY_MATRIX_V |
觀察(V)矩陣,從世界空間到觀察空間 |
UNITY_MATRIX_P |
投影(P)矩陣,從觀察空間到裁剪空間 |
UNITY_MATRIX_VP |
觀察(V)投影(P)矩陣,從世界空間到裁剪空間 |
UNITY_MATRIX_T_MV |
UNITY_MATRIX_MV的轉置矩陣 |
UNITY_MATRIX_IT_MV |
UNITY_MATRIX_MV的逆轉置矩陣,用於將法線從模型空間轉換到觀察空間 |
_Object2World | 模型矩陣,從模型空間到世界空間 |
_World2Object | _Object2World的逆矩陣,從世界空間到模型空間 |
_WorldSpaceCameraPos(float3) | 攝像機的世界座標 |
_ProjectionParams(float4) | 投影引數 x=±1.0(-1.0表示使用翻轉投影矩陣進行渲染) y=Near近裁剪平面與攝像機的距離 z=Far遠裁剪平面與攝像機的距離 w=1.0+1.0/Far |
_ScreenParams(float4) | 螢幕引數 x=width渲染目標的畫素寬度 y=height渲染目標的畫素高度 z=1.0+1.0/width w=1.0+1.0/height |
_ZBufferParams(float4) | 線性化Z(深度)緩衝引數 x=1-Far/Near y=Far/Near z=x/Far w=y/Far |
unity_OrthoParams(float4) | 正交投影攝像機引數 x=width y=height z未使用 w=1.0(正交投影攝像機)或0.0(透視攝像機) |
unity_CameraProjection(float4x4) | 攝像機投影矩陣 |
unity_CameraInvProjection(float4x4) | unity_CameraProjection的逆矩陣 |
unity_CameraWorldClipPlanes(float4[6]) | 攝像機6個裁剪平面在世界空間下的方程式。 順序:左、右、下、上、近、遠 |