1. 程式人生 > >Unity Shader中內建的座標空間與轉換矩陣函式

Unity Shader中內建的座標空間與轉換矩陣函式

模型空間(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的逆矩陣,從世界空間到模型空間


Untiy攝像機和螢幕引數:

_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個裁剪平面在世界空間下的方程式。
順序:左、右、下、上、近、遠