Unity Shader---渲染時的頂點變換過程和五個空間的介紹





渲染游戲就是把一個一個的頂點經過層層出來表現在屏幕上的過程。

頂點着色器主要是把輸入的數據進行矩陣變換位置,計算光照公式生成逐頂點顏⾊,⽣成/變換紋理坐標。並且把位置和紋理坐標這樣的參數發送到片段着色器。
頂點着色器的最基本任務就是:把頂點從模型空間轉換到屏幕空間。有三個頂點變換過程

片元着色器主要是處理由光柵化階段生成的每個片元,最終計算出每個像素的最終顏色。
片元着色器主要任務是:得到該片元在在屏幕空間的像素位置。

1、模型空間

模型空間又叫對象空間、局部空間。

每個模型都有一個Mesh 這里存儲了它的頂點信息,頂點信息就是他的頂點坐標,這個頂點坐標是相對於這個模型的自身中心來說的,這個中心是建模的時候設定的,以這個空間為坐標系稱為模型空間。
每個模型都有一個自己獨立的坐標空間,當他移動或者旋轉時候,模型空間也會跟着變化。

2、世界空間

第一步:從模型空間變換到世界空間。

Unity中的世界空間是不會改變的,如果一個物體沒有父物體,那么它Transform上顯示的位置就是相對於世界空間的位置。

3、觀察空間

第二步:從世界空間變換到觀察空間。

觀察空間又叫攝像機空間。
攝像機位於觀察空間的原點。觀察空間和其他空間不同的一點是只有觀察空間使用右手坐標系,攝像機的前方即Z軸負方向。

4、裁剪空間

第三步:從觀察空間變換到裁剪空間。

裁剪空間又叫齊次裁剪空間
裁剪空間的目標是能夠方便的對渲染圖元進行剪裁:完全位於這個空間的圖元會被保留,完全在外的會被剔除,空間邊界的會被裁剪。
這塊空間是由攝像機可看到空間,即一個視錐體決定的。視錐體的6個面叫裁剪平面。

齊次坐標就是把n維向量用n+1維表示。主要用於區別向量和點,(x,y,z,w) w為0為向量,w為1為點。

5、屏幕空間

第四步:從裁剪空間變換到屏幕空間。

最后一步就是把視錐體投影到屏幕空間,變換后來得到真正的像素位置,而不是虛擬的三維坐標了。

在Unity中,從裁剪空間到屏幕空間的轉換是自動完成的。我們的頂點着色器只需要把頂點轉換到裁剪空間即可。

6、圖

參考於《Unity Shader入門精要》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM