圖形渲染管線
應(yīng)用程序階段
主要任務(wù)是在應(yīng)用程序階段的末端,將需要在屏幕上顯示出來繪制的集合體(如點、線、矩陣等)輸入到繪制管線的下一個階段。
對于被渲染的每一幀,應(yīng)用程序階段將攝像機位置,光照和模型的圖元輸出到管線的下一個主要階段——幾何階段。
幾何階段
可以劃分為一下幾個功能階段:
模型視圖變換 Model & View Transform:分為模型變換和視圖變換,模型變換即旋轉(zhuǎn)、平移、縮放,視圖變換可以理解為將模型轉(zhuǎn)到相機坐標系下。
頂點著色 Vertex Shading:確定模型上頂點處材質(zhì)的光照效果。
投影 Projection:將視體變換到規(guī)范立方體(Canonical View Volume,CVV)中,模型位于歸一化設(shè)備坐標系中(NDC)。分為正交投影和透視投影,Z 坐標將不會再保存于的得到的投影圖片中,所以就是將模型從三維空間投射到了二維的空間中的過程。
裁剪 Clipping:對部分位于視體內(nèi)部的圖元進行裁剪操作。
屏幕映射 Screen Mapping:將之前得到的坐標映射到對應(yīng)的屏幕坐標系上。
光柵化階段
可以分為以下幾個功能階段:
三角形設(shè)定(Triangle Setup)階段:計算三角形表面的差異和三角形表面的其他相關(guān)數(shù)據(jù)。
三角形遍歷(Triangle Traversal)階段:找到哪些采樣點或像素在三角形中的過程。
像素著色(Pixel Shading)階段:所有逐像素的著色計算都在像素著色階段進行,使用插值得來的著色數(shù)據(jù)作為輸入,輸出結(jié)果為一種或多種將被傳送到下一階段的顏色信息。紋理貼圖操作就是在這階段進行的。
融合(Merging)階段:合成當前儲存于緩沖器中的由之前的像素著色階段產(chǎn)生的片段顏色。此外,融合階段還負責可見性問題(Z 緩沖相關(guān))的處理。
GPU渲染管線
綠色的階段是完全可編程的
黃色的階段可配置,但不可編程
藍色的階段完全固定
頂點著色器(The Vertex Shader)
是完全可編程的階段,頂點著色器可以對每個頂點進行諸如變換和變形在內(nèi)的很多操作,提供了修改/創(chuàng)建/忽略頂點相關(guān)屬性的功能,這些頂點屬性包括顏色、法線、紋理坐標和位置。頂點著色器的必須完成的任務(wù)是將頂點從模型空間轉(zhuǎn)換到齊次裁剪空間。
幾何著色器(The Geometry Shader)
位于頂點著色器之后,允許 GPU 高效地創(chuàng)建和銷毀幾何圖元。幾何著色器是可選的,完全可編程的階段,主要對圖元(點、線、三角形)的頂點進行操作。幾何著色器接收頂點著色器的輸出作為輸入,通過高效的幾何運算,將數(shù)據(jù)輸出,數(shù)據(jù)隨后經(jīng)過幾何階段和光柵化階段的其他處理后,會發(fā)送給片段著色器。
裁剪(Clipping)
屬于可配置的功能階段,在此階段可選運行的裁剪方式,以及添加自定義的裁剪
面。
屏幕映射(Screen Mapping)、三角形設(shè)置(Triangle Setup)和三角形遍歷(Triangle Traversal)階段是固定功能階段。
像素著色器(Pixel Shader)
像素著色器(Pixel Shader, Direct3D 中的叫法)常常又稱為片斷著色器,片元著色器(FragmentShader, OpenGL 中的叫法),是完全可編程的階段,主要作用是進行像素的處理,讓復雜的著色方程在每一個像素上執(zhí)行。
合并階段(The Merger Stage)
處于完全可編程和固定功能之間,盡管不能編程,但是高度可配置,可以進行一系列的操作。其除了進行合并操作,還分管顏色修改(Color Modifying), Z 緩沖(Zbuffer),混合(Blend),模板(Stencil)和相關(guān)緩存的處理。
來源:《Real-Time Rendering 3rd》提煉總結(jié)
審核編輯 黃昊宇
-
渲染
+關(guān)注
關(guān)注
0文章
69瀏覽量
10910
發(fā)布評論請先 登錄
相關(guān)推薦
評論