GPU 圖形渲染流水線的主要工作可以被劃分為兩個部分:
① 把 3D 坐標轉(zhuǎn)換為 2D 坐標
② 把 2D 坐標轉(zhuǎn)變?yōu)閷嶋H的有顏色的像素
GPU 圖形渲染流水線的具體實現(xiàn)可分為六個階段,如下圖所示。
1. 頂點著色器(Vertex Shader)
2. 形狀裝配(Shape Assembly),又稱 圖元裝配
3. 幾何著色器(Geometry Shader)
4. 光柵化(Rasterization)
5. 片段著色器(Fragment Shader)
6. 測試與混合(Tests and Blending)
第一階段,頂點著色器。
該階段的輸入是 頂點數(shù)據(jù)(Vertex Data) 數(shù)據(jù),比如以數(shù)組的形式傳遞 3 個 3D 坐標用來表示一個三角形。頂點數(shù)據(jù)是一系列頂點的集合。頂點著色器主要的目的是把 3D 坐標轉(zhuǎn)為另一種 3D 坐標,同時頂點著色器可以對頂點屬性進行一些基本處理。
第二階段,形狀(圖元)裝配。
該階段將頂點著色器輸出的所有頂點作為輸入,并將所有的點裝配成指定圖元的形狀。圖中則是一個三角形。圖元(Primitive) 用于表示如何渲染頂點數(shù)據(jù),如:點、線、三角形。
第三階段,幾何著色器。
該階段把圖元形式的一系列頂點的集合作為輸入,它可以通過產(chǎn)生新頂點構(gòu)造出新的(或是其它的)圖元來生成其他形狀。例子中,它生成了另一個三角形。
第四階段,光柵化。
該階段會把圖元映射為最終屏幕上相應的像素,生成片段。片段(Fragment) 是渲染一個像素所需要的所有數(shù)據(jù)。
第五階段,片段著色器。
該階段首先會對輸入的片段進行 裁切(Clipping)。裁切會丟棄超出視圖以外的所有像素,用來提升執(zhí)行效率。
第六階段,測試與混合。
該階段會檢測片段的對應的深度值(z 坐標),判斷這個像素位于其它物體的前面還是后面,決定是否應該丟棄。此外,該階段還會檢查 alpha 值( alpha 值定義了一個物體的透明度),從而對物體進行混合。因此,即使在片段著色器中計算出來了一個像素輸出的顏色,在渲染多個三角形的時候最后的像素顏色也可能完全不同。
關于混合,GPU 采用如下公式進行計算,并得出最后的顏色。
R = S + D * (1 - Sa)
關于公式的含義,假設有兩個像素 S(source) 和 D(destination),S 在 z 軸方向相對靠前(在上面),D 在 z 軸方向相對靠后(在下面),那么最終的顏色值就是 S(上面像素) 的顏色 + D(下面像素) 的顏色 * (1 - S(上面像素) 顏色的透明度)。
上述流水線以繪制一個三角形為進行介紹,可以為每個頂點添加顏色來增加圖形的細節(jié),從而創(chuàng)建圖像。但是,如果讓圖形看上去更加真實,需要足夠多的頂點和顏色,相應也會產(chǎn)生更大的開銷。為了提高生產(chǎn)效率和執(zhí)行效率,開發(fā)者經(jīng)常會使用 紋理(Texture) 來表現(xiàn)細節(jié)。紋理是一個 2D 圖片(甚至也有 1D 和 3D 的紋理)。紋理一般可以直接作為圖形渲染流水線的第五階段的輸入。
最后,我們還需要知道上述階段中的著色器事實上是一些程序,它們運行在 GPU 中成千上萬的小處理器核中。這些著色器允許開發(fā)者進行配置,從而可以高效地控制圖形渲染流水線中的特定部分。由于它們運行在 GPU 中,因此可以降低 CPU 的負荷。著色器可以使用多種語言編寫,OpenGL 提供了 GLSL(OpenGL Shading Language) 著色器語言。
-
gpu
+關注
關注
28文章
4938瀏覽量
131189
發(fā)布評論請先 登錄
自動化開裝封碼流水線數(shù)據(jù)采集解決方案

遠程io模塊在汽車流水線的應用
GPU架構(gòu)深度解析

工業(yè)流水線上用的條碼掃碼器,如何選擇與使用?

RISC-V五級流水線CPU設計

工業(yè)讀碼器解決方案在自動化流水線上掃描條碼的應用

SMT流水線布局優(yōu)化技巧
工業(yè)流水線的智能助手——智能計數(shù),效率倍增

【「算力芯片 | 高性能 CPU/GPU/NPU 微架構(gòu)分析」閱讀體驗】--了解算力芯片GPU
行云流水線 滿足你對工作流編排的一切幻想~skr
ADS930高速流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS5421流水線式模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

ADS5413 CMOS流水線模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

MT6701磁編碼IC在自動化插件流水線中的應用

MT6835磁編碼IC在自動鏈板流水線中控制電機的應用

評論