安徽理工大學電氣與信息工程學院 魯孝平
顯卡的工作原理
安徽理工大學電氣與信息工程學院 魯孝平
本文介紹了顯卡的工作原理,詳細闡述其四個工作步驟幾何處理、光柵化、像素渲染、ROP后端輸出的概念及工作原理。提出顯卡工作過程中出現的問題并給予解決方案。通過圖像清晰明了地表達了其工作原理。
顯卡;幾何處理;光柵化;像素渲染;后端
顯卡簡稱GPU,是組成計算機硬件系統的重要一環,主要負責計算機顯示圖像輸出。它通過與CPU的精密配合,繪制出一幅幅精美的畫面。現代GPU工作任務主要包括幾何處理,光柵化,像素渲染,ROP輸出這四個步驟。本文就通過對這四個步驟的詳細闡述來展示GPU是如何工作的。
整個流程的第一步是幾何處理,它的作用是把抽象的數學公式轉化為電腦屏幕前栩栩如生的形象輪廓。對于編程者來說,任何顯示在電腦屏幕上的圖像信息。都使由諸多復雜的數學公式來表示的,通過這些數學公式可以將程序員腦海中的復雜圖像,在一個三維坐標系中展現出來,把物體表面一些重要的關鍵點在通過數學公式映射在坐標系中,并通過一定的規則將這些離散的坐標點連起來,這樣就形成了一個在虛擬空間中的物體幾何輪廓,最后在通過對相應坐標點的位置變換,從而實現物體運動的表現。[1]
這些處于虛擬空間中的坐標點我們稱之為多邊形頂點,而GPU的工作就是將代碼中所描述的頂點參數映射到虛擬空間的坐標系中。首先CPU通過數學運算將程序中抽象的數學運算,翻譯成具體的頂點坐標,之后GPU則將這些頂點坐標一一描繪到虛擬空間的坐標系中,再根據預先設定的規則講這些頂點連接起來從而實現對物體外形的重現,這個過程由GPU中的幾何來完成。[2]
經過上面的步驟,物體的大致輪廓就已經確定下來了。之后依據不同程序的要求,對模型進行更加精細化的處理,如曲面細分Tesselation,就是利用GPU硬件加速,將現有3D模型的三角形拆分得更細小、更細致,也就是大大增加三角形數量,使得渲染對象的表面和邊緣更平滑、更精細。[3]最終物體的外形輪廓被精準的確定下來,一個生動鮮活的物體形象在虛擬世界中被GPU的幾何單元創造出來。
但是由于電腦屏幕顯示的均是二維圖像信息,因而接下來的步驟就是如何將復雜的三維世界物體模型映射到二維平面中表達出來,這就是GPU中另一個單元Rasterizer所要完成的工作。
到這里為止,所有關于圖像的三維操作都將結束。Rasterizer光柵化是通過透視原理將分布散三維空間的立體坐標信息映射到二維平面直角坐標系中。由于電腦所使用的顯示器是一個二維平面結構,無法直接展示出三維空間的全部信息,所以需要通過透視原理將三維空間中的景深信息表達出來,這也就是我們所說的圖像立體感。同時為了實現物體信息的像素化,Rasterizer這個步驟也是必不可少的。Rasterizer通過一系列的數學變換將三維坐標轉換為平面二維坐標,這個過程中圖像原本的Z軸坐標信息將會被單獨提取出來存放入Z-Buffer中,作為景深值。[4]
經過光柵化操作后物體的輪廓信息就已經被定格在平面像素中,那么接下來的工作就是將物體的顏色信息填充到圖像中,這個部分的工作又稱為材質操作,而這一過程將由GPU中的PixlShader完成,它將賦予圖像鮮活的生命力。[5]
材質操作就是GPU給物體填色的過程,但是由于硬件限制,實際操作中無法象現實生活中那樣直觀地操作,需要借助代碼去完成,而GPU的工作就是講這些代碼轉換為人們能夠識別的顏色信息,繼而填充在圖像上,最終呈現在顯示屏上。
在實際操作中,對圖像上色的過程是有材質庫來完成的,在3D圖形的設計過程中,已經包含了其本身的材質信息,這些材質信息會與相應的坐標關聯起來,從而還原出物體本身的色彩及圖案。這些材質庫中的信息會在光柵化處理后重新還原到物體表面,由于物體由3維坐標轉化為2為坐標,因而需要對材質庫中的信息進行篩選,根據新的形狀范圍進行裁剪,再將裁剪后的材質填充在對因區域中,也就完成了對物體上色的過程。[6]-[7]在整個過程中GPU的工作就向搬運工一樣,通過材質庫尋找并提取物體的色彩和圖案信息,之后將其填充到物體表面,整個過程簡單高效。

圖2 材質操作的過程
整個3D圖像生成過程到這里好像結束了,然而這樣的圖像展現在屏幕上會非常的死板。為了解決這樣的問題,我們需要將真實世界的光影信息添加到我們的物體上,將物體的實時動態效果展示出來,從而滿足人們越來越高的視覺要求,這項任務將由Pixel Shader來完成。
Pixel Shader的主要工作就是還原物體被光線照射之后所呈現出來的色彩信息,這些色彩信息GPU都將在像素上進行操作,所以也就是對像素的色彩進行修改。對于一個3D圖像中的物體來說,其本身的色彩信息將會被拆分為紅綠藍三原色不同的組合來表達,而在電子計算機中,紅綠藍三原色的不同組合是通過一個三維矩陣來實現的。所以要想改變像素的顏色信息,就需要對這個三維矩陣進行修改。
到這里,shader與材質操作的關系已經非常明了了。材質單元與shader/ALU同時描繪了物體表面的圖像,當兩者分開操作時,材質操作對于場景和物體光影的描述無法達到較高的自由度,而Pixel Shader對像素沒有實時創造力只能進行修飾,所以若想達到較好的視覺效果,材質單元與shader/ALU兩者缺一不可。
圖像處理的過程是利用編程圖像拆分成幾個基本的部分,再通過硬件合并和表達。從最開始的幾何處理,到最后的材質操作和Pixel Shader操作,處理的過程嚴格執行操作步驟,最后形成了基本組成部分的“制造”過程。最后ROP將所有的工作合并在一起,圖像處理就完成了。
ROP的處理過程如下:拾取好的材質和shader處理結束的像素會被傳送到z/stencil buffer中。經過光柵化處理之后的模型雖已沒有真正的Z軸,但存在Z-buffer中的深度信息能夠讓ROP決定哪些像素可被顯示出來,ROP單元會對這些像素進行檢查,這樣做可避免在前面顯示出被完全遮擋的像素,也能為color output的操作減輕壓力。
特定范圍內的深度值,在像素深度檢查操作完成后將被輸送到alpha單元進行透明度檢查。ROP會根據程序需要通過Blend單元對特定的像素進行alpha Blending操作。剩下的像素在以上步驟結束后將被填充進2D化模型需要的范圍內,即Pixel Fillrate過程。
當shader以數學形式處理完像素效果后,若沒有AA操作,圖像渲染工作到這里就已徹底完成了,所有效果的混合填充會讓畫面正確的實現。畫面會被送入output buffer等待輸出。若程序要求類似MSAA這樣的AA操作,則ROP中的AA單元還需再多次進行多重采樣在將采樣后的像素點進行color Blending操作,最后的畫面將通過幀緩存輸出到屏幕上。[8]
由此可見ROP單元是整個GPU工作流程中最為重要的一環,其工作效率的高低將直接影響到整個流程的效率,負責將之前其他單元的工作成果最終轉化為一幅幅精美的畫面。ROP單元的性能將直接影響到整個GPU的實際表現,作為整條STREAM中的最后一個環節,完美的結束GPU的工作。
到此為止整個GPU的工作過程已經詳述完成,正是通過以上這些復雜而有趣的工作,那些精美的想象中的畫面才能展現出來,而這也是推動GPU發展的動力源泉,在此希望在未來的世界中,可以伴隨GPU的發展為大家帶來更加真實的世界。
[1]姜曉麗,王偉,隋毅.GPU工作流程簡介[J].科技創新導報,2010(24):46-46.
[2]月之繭.演繹視覺精彩——GPU工作原理簡析(上)[J].大眾硬件,2004(9):106-108.
[3]張琴,李芳.可編程GPU技術的應用研究[J].泰山學院學報,2008,30(6):20-23.
[4]洪偉.顯卡的結構和工作原理[J].電腦界:應用文萃,2000(3):13-15.
[5]斯佳麗,laoshu.繽紛色彩競妖嬈——顯卡綜述[J].電腦愛好者,2004(9):75-79.
[6]趙中秋.顯卡維修知識精解[M].電子工業出版社,2010.
[7]馬恕.硬件原理篇之二——畫面是怎樣顯示出來的?[J].電腦自做,2003(8):127-129.
[8]毛華慶.基于GPU優化的三維實時渲染技術的研究[D].武漢大學,2010.
魯孝平(1991—),女,現就讀于安徽理工大學山南校區電氣與信息工程學院。