天天看點

實時渲染技術之一-------渲染管線

什麼是渲染:

       簡單的說渲染就是把繪制的3D物體通過可程式設計流水線繪制在2D的螢幕上的過程。渲染速度的表示是FPS或Hz,

什麼是渲染管線:

       渲染管線也稱為渲染流水線,是顯示卡内部處理圖形資訊互相獨立的并行處理單元,形象的比喻就是工廠流水線。渲染管線一個顯著的特點是處理是并行的,這樣能最大化利用顯示卡資源。

渲染分為幾個階段:

       實時渲染為了能夠提升渲染效率,将渲染初略的分為了四個階段,即應用階段;幾何處理階段,光栅化階段,像素化階段。

流程圖如下:

實時渲染技術之一-------渲染管線

由圖可以看出,每個階段還可以細分出自己的子渲染管線。

各個階段又是怎樣處理的:

         應用階段:該階段的處理是在應用程式内部被處理,如一些遊戲引擎渲染時的碰撞檢測,實體引擎,加速算法等,這些都是在CPU上處理。該階段的最後把計算好的渲染對象的頂點,法線,紋理坐标,紋理等内容通過資料總線傳遞給圖形處理器,作為渲染管線進一步處理的源資料。這個階段的的任務有準備場景資料,如場景中模型,相機,光源等,然後剔除不可見物體,将待渲染物體設定好渲染狀态,處理完成之後輸出渲染圖元(即幾何資訊),每個渲染圖元裡包含了該圖元所對應的所有頂點資料。

       幾何階段:該階段用于處理幾何繪制相關的階段,該階段決定什麼圖元将被渲染,如何被渲染以及渲染在哪,該過程是在GPU中進行計算。該階段主要處理頂點着色、投影、裁剪和螢幕映射,流程如下:

實時渲染技術之一-------渲染管線

頂點着色主要計算每個頂點上的光照效果,将頂點位置,法線,顔色存儲在頂點上。投影主要處理坐标系變換問題。裁剪主要對視錐内圖元進行裁剪操作,剔除視錐外圖元。螢幕映射主要是将圖元坐标映射到計算機螢幕坐标系中。

       光栅化階段:該階段主要處理圖元的三角形設定和三角形周遊。目的是找出所有圖元的所有像素。這裡主要處理含有z(深度)和各種渲染資訊的二維螢幕空間的點像螢幕上像素點的轉換。

       像素化階段:該階段主要使用插值來處理每個像素的着色計算,因為光栅化階段隻是把頂點渲染到螢幕上,在三個頂點組成的三角片元中未覆寫的像素要進行插值處理。

繼續閱讀