1. 程式人生 > 其它 >渲染管線

渲染管線

應用階段、幾何階段和光柵階段。

應用階段

主要是CPU與記憶體打交道,例如碰撞檢測,計算好的資料(頂點座標、法向量、紋理座標、紋理)就會通過資料匯流排傳給圖形硬體 。

幾何階段(Geometry Stage)

這個階段也被稱為“變換和光照”階段。為了從3D場景轉換到2D,場景中的所有物體都需要轉換到幾個空間。每個空間都有自己的座標系。這些轉換是通過一個空間的頂點轉換到另一個空間的頂點來實現的。
座標系變換:物體座標系、世界座標系、相機座標系。
轉換剪下空間,並通過圖元裝配,組裝成圖元(primitive,三角形或線)。當物體在視體的外,說明我們不需要渲染這個物體,所以就簡單丟棄它。當一個物體有部分在視體內,我們需要進行剪下,同時生成新的頂點。新頂點具有適當的的紋理座標和顏色座標。
接著我們執行透視分割操作

,其實就是實現了一個投影變換,把”近大遠小“的效果實現出來。把一個視體轉換為歸一化的立方體。這個立方體的座標範圍:x和y在-1和1之間,z在0和1之間。同時視體內的物體也一同進行縮放。這樣一來得到的立方體,便於裁剪操作,也便於將來投影到平面(立方體只需要“扁平化”)。
最後,我們轉換到螢幕空間。執行的操作:根據視窗大小將x和y座標縮放到合適的座標,這樣就得到2D圖片了。(請注意,頂點的z座標會保留,用於以後的深度操作)
光照(lighting),是這個階段的另一個主要部分。是使用物體表面的法向量來計算的。通過攝像機的位置和光源的位置,可以計算出給定頂點的光照屬性。

光柵階段(Rasterization Stage)

渲染的最後一個階段是光柵化,這個階段的工作就是將已經準備好的資料在螢幕上顯示出來。實際過程中,模型經過轉換到視口空間之後,GPU會計算出每個畫素的深度、畫素的顏色、插值得出的紋理座標、畫素位置等資料。這些資料會被用來測試可見性,並且最終繪製到影象緩衝區。

參考

https://www.jianshu.com/p/923f061206ad
https://blog.csdn.net/nikoong/article/details/79776873