渲染流水線的工作任務在于由一個三維場景出發、生成(或者說渲染)一張二維圖像。換句話說,計算機需要從一系列的定點數據、紋理等信息出發,把這些信息最終轉換成一張人眼可以識別的圖像。而這個工作通常是由CPU和GPU共同完成的。
渲染流程分為3個階段:
? 應用階段(Application)
? 幾何階段(Geometry Stage)
? 光柵化階段(Rasterizer Stage).
注意,這里僅僅是概念性階段,每個階段本身通常也是一個流水線系統,即包含了子流水線階段下圖顯示了3個概念階段之間的聯系。
應用階段
從這個名字我們可以看出,這個階段是由我們的應用主導的,因此通常由CPU負責實現,換句話說,我們這些開發者具有這個階段的絕對控制權。
在這個階段中,開發者有3個主要任務:
首先,我們需要準備好場景數據,例如攝像機的位置、視錐體、場景中包含了哪些模型、使用了哪些光源等等;
其次,為了提高渲染性能,我們往往需要做一個粗粒度的剔除(culling)工作,以把那些不可見的物體剔除出去,這樣就不需要再移交給幾何階段處理;
最后,我們需要設置好每個模型的渲染狀態。
這些渲染狀態包括但不限于它使用的材質(漫反射顏色、高光反射顏色)、使用的紋理、使用的Shader等。這一階段最重要的是輸出渲染所需要的幾何信息,即渲染圖元(rendering primitives)、通俗來講,渲染圖元可以是點、線、三角面等。這些渲染圖元將會被傳遞給下一個階段——幾何階段。
幾何階段
幾何階段用于處理所有和我們要繪制的幾何相關的事情。例如,決定需要繪制的圖元是什么,怎樣繪制它們,在哪里繪制它們。這個階段通常在GPU上進行。
幾何階段負責和每個渲染圖元打交道,進行逐定點、逐多邊形的操作。這個階段可以進一步分成更小的流水線階段,幾何階段的一個重要任務就是把定點的坐標轉換屏幕空間中,再交給光柵器進行處理。通過對輸入的渲染圖元進行多步處理后,這一階段將會輸出屏幕空間的二維定點坐標、每個定點對應的深度值、著色等相關信息,并傳遞給下一個階段。
光柵化階段
這一階段將會使用上個階段傳遞的數據產生屏幕上的像素,并渲染出最終的圖像。這一階段也是在GPU上運行。光柵化的任務主要是決定每個渲染圖元的哪些像素應該被繪制在屏幕上。它需要對上一個階段得到的逐頂點數據(例如紋理坐標、頂點顏色等)進行插值,然后再進行逐像素處理。
-
流水線
+關注
關注
0文章
120瀏覽量
25738 -
半導體芯片
+關注
關注
60文章
918瀏覽量
70632
原文標題:什么是渲染流水線?
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論