天天看點

從山峰渲染了解GPU圖形流水線

 ● 從山峰渲染了解GPU圖形流水線

    在這一部分,筆者将和大多數初識GPU的愛好者一道探尋GPU的渲染步驟,我們使用一座山峰的渲染曆程來幫助大家簡單了解GPU圖形流水線的工作原理。簡單的說:GPU主要完成對3D圖形的處理——圖形的生成渲染。

從山峰渲染了解GPU圖形流水線

從山峰渲染看GPU圖形流水線

    1、頂點生成

    圖形學API(應用程式接口)用最初級的圖元(點、線、三角形)來表示物體表面。每個頂點除了(x,y,z)三維坐标屬性外還有應用程式自定義屬性,例如位置、顔色、标準向量等。結合到我們看到的這座山峰,首先GPU從顯存中讀取描述山峰3D外觀的頂點資料。

    2、頂點處理

  這階段GPU讀取描述3D圖形外觀的頂點資料并根據頂點資料确定3D圖形的形狀及位置關系,建立起3D圖形的骨架。在支援DX8和DX9規格的GPU中,這些工作由硬體實作的Vertex Shader(頂點着色器)完成。這個階段中GPU生成一批反映山峰三角形場景位置與方向的頂點。

    3、光栅化計算

    顯示器實際顯示的圖像是由像素組成的,我們需要将上面生成的圖形上的點和線通過一定的算法轉換到相應的像素點。把一個矢量圖形轉換為一系列像素點的過程就稱為光栅化。例如,一條數學表示的斜線段,最終被轉化成階梯狀的連續像素點。

    在螢幕空間内生成山峰頂點之後,這些頂點被分為三角形圖元,GPU内的固定單元會對這些山峰圖元做光栅化過程,相應的片元集合也就随之産生。

從山峰渲染了解GPU圖形流水線

GPU内部渲染流水線

    4、紋理帖圖

    頂點單元生成的多邊形隻構成了3D物體的輪廓,而紋理映射(texture mapping)工作完成對多變形表面的帖圖,通俗的說,就是将多邊形的表面貼上相應的圖檔,進而生成“真實”的圖形。TMU(Texture mapping unit)即是用來完成此項工作。

    5、像素處理

這個階段(在對每個像素進行光栅化處理期間)GPU完成對像素的計算和處理,進而确定每個像素的最終屬性。在支援DX8和DX9規格的GPU中,這些工作由硬體實作的Pixel Shader(像素着色器)完成。

    像素操作用每個片元的螢幕坐标來計算該片元對最終生成圖像上的像素的影響程度。在這個階段Pixel Shader(像素着色器)從顯存中讀取紋理資料對山峰片元上色并渲染。

    6、最終輸出:

    由ROP(光栅化引擎)最終完成像素的輸出,1幀渲染完畢後,被送到顯存幀緩沖區。AA即多重采樣,對ROP性能和圖形卡帶寬有相當的壓力。而各項異性過濾則對TMU帶來更多的負擔。

    這個階段由ROP單元完成所有山峰像素到幀緩沖區的輸出,幀緩沖區内的資料,經過D/A轉換輸出到顯示器之後,我們就可以看到繪制完成的山峰圖像。

繼續閱讀