渲染管線

渲染管線

渲染管線也稱為渲染流水線,是顯示晶元內部處理圖形信號相互獨立的并行處理單元。

簡介


渲染管線也稱為渲染流水線或像素流水線或像素管線,是顯示晶元內部處理圖形信號相互獨立的的并行處理單元。在某種程度上可以把渲染管線比喻為工廠裡面常見的各種生產流水線,工廠里的生產流水線是為了提高產品的生產能力和效率,而渲染管線則是提高顯卡的工作能力和效率。
由於在新的時代,對遊戲畫面、質量有越來越高的要求使傳統的渲染架構無法滿足遊戲發展的需要,微軟在Vista中一起發布了最新的DirectX 10技術,以取代上代的DX9.0技術。
在DX10的統一渲染架構中,渲染管線、頂點著色器等不復存在。所謂統一渲染架構,大家可以理解為將Vertex Shader(頂點著色器單元)、Pixel Pipelines(像素渲染管線)統一被Stream Processors(流處理器)所取代。此時,顯卡中的GPU將不會開闢獨立的渲染管線,而是所有的運算單元都可以任意處理任何一種Shader運算。這使得GPU的利用率更加高,也避免了傳統架構中由於資源分配不合理引起的資源浪費現象。最新的DX11也是採用流處理器的統一渲染架構。

數量參數


渲染管線
渲染管線
渲染管線的數量一般是以像素渲染流水線的數量×每管線的紋理單元數量來表示。例如,GeForce 6800Ultra的渲染管線是16×1,就表示其具有16條像素渲染流水線,每管線具有1個紋理單元;GeForce4 MX440的渲染管線是2×2,就表示其具有2條像素渲染流水線,每管線具有2個紋理單元等等,其餘表示方式以此類推。渲染管線的數量是決定顯示晶元性能和檔次的最重要的參數之一,在相同的顯卡核下,更多的渲染管線也就意味著更大的像素填充率和紋理填充率,從顯卡的渲染管線數量上可以大致判斷出顯卡的性能高低檔次。但顯卡性能並不僅僅只是取決於渲染管線的數量,同時還取決於顯示核心架構、渲染管線的的執行效率、頂點著色單元的數量以及顯卡的核心頻率和顯存頻率等等方面。一般來說在相同的顯示核心架構下,渲染管線越多也就意味著性能越高,例如16×1架構的GeForce 6800GT其性能要強於12×1架構的GeForce 6800,就象工廠里的採用相同技術的2條生產流水線的生產能力和效率要強於1條生產流水線那樣;而在不同的顯示核心架構下,渲染管線的數量多就並不意味著性能更好,例如4×2架構的GeForce2 GTS其性能就不如2×2架構的GeForce4 MX440,就象工廠里的採用了先進技術的1條流水線的生產能力和效率反而還要強於只採用了老技術的2條生產流水線那樣。

重要性


渲染管線
渲染管線
顯卡的渲染管線是顯示核心(也就是顯卡的GPU,顯卡的心臟,學名叫顯示處理單元)的重要組成部分。現階段的顯卡(主要是針對微軟DIRECTX(驅動和操作系統的介面技術)的版本來說的)都是非統一架構的,也就是分為頂點渲染和像素渲染。那麼在顯示核心的內部就分為兩大區域,一個區域就是頂點渲染單元(也叫頂點著色或頂點著色引擎),主要負責描繪圖形,也就是建立模形。一個就是像素渲染管線(也叫像素渲染管道),主要負責把頂點繪出的圖形填上填色。然後再加上紋理貼圖單元貼上紋理,一個精美的圖形就出來了。如果還不懂,那舉個簡單的例子:比如現在要顯卡繪出一個茶壺。當這個茶壺的頂點信息從顯存傳到頂點著色單元后,頂點著色單元就會依據這些信息繪出這個茶壺的輪 廓。接下來像素渲染管線就會依據這個輪廓,把從顯存中的有關這個茶壺的顏色信息讀出來,給這個茶壺上色,如果這個茶壺是白色的,就上白色的。然後再由紋理貼圖單元貼上精美的圖案,最後這個精美的茶壺就出來了。設想一下,平時畫畫,是不是也是先畫個大概,然後再進行修改,上色,畫上圖案,最後才畫好呀,其實顯卡工作起來,也和畫畫差不多,只不過他的效率很高,每秒可以畫上億個罷了。

專門通道


渲染管線
渲染管線
渲染管線就是顯示核心中負責給圖形配上顏色的一組專門通道。它是顯示核心中單獨設計 的一組電路,擁有單獨的晶體管。渲染管線越多,那麼所繪出的圖形它的填充效率就越高,自然我們看到的畫面也就越流暢越精美。這就是為什麼渲染管線越多越好的原因。如果少了,那麼自然就會使顯卡的性能下降。當然渲染管線越多,顯示核心就會越大,因為它所使用的晶體管數目增加了。
不過在微軟的DIRECTX10出來后,頂點渲染和像素渲染將淡出人們的視線,因為它將採用統一架構。也就是一個核心中是由一組專門的通道既負責頂點渲染又負責像素渲染的。也就是只會有貼圖單元。這個時候是貼圖單元越多越好,畫面越好,越流暢,性能越高。

紋理貼圖單元


在非統一架構時代,像素渲染管線中還有一個概念,就是前文中說到的紋理貼圖單元,一般來說,一條像素渲染管線只有一個貼圖單元,當然也有2個,3個甚至4個的。比如NVIDIA的GEFORCE5800ULTRA就是2個,ATI的X1900GT就是3個,ATI的X1900XTX就是4個。這也就是為什麼ATI的X1900系列發布后,都是16條渲染管線,但貼圖單元卻是48個的原因。那麼X1900GT是36個貼圖單元也就不難得出了,因為它有12條渲染管線,每個管線中有3個紋理貼圖單元。其實這又引出了一個概念,就是紋理填充率,這也是顯卡的一個重要性能指標,和渲染管線一樣也是越多越好,這兩者是相輔相成的。

應用


渲染管線
渲染管線
象素渲染管線是衡量顯卡的一個方面. 簡單的講就是 面向成色的東西吧,現在被廠商宣傳的管線概念都亂套了,ATI在X1900XTX的介紹中,明確強調"像素渲染單元"增加了三倍。達到了48個,而非廠家和媒體所說的48個渲染管線, 從以前的顯卡來看,GeForce4 TI4200具有2個頂點單元;4個渲染管線,每個渲染管線搭配兩個貼圖單元.FX5800/5900具有3個頂點單元;4個渲染管線,每個渲染管線僅有個2貼圖單元,RADEON9700具有4個頂點單元;8個渲染管線,每個渲染管線僅有個1貼圖單元.RADEON9000具有1個頂點單元;4個渲染管線,每個渲染管線有個1貼圖單元!也就是說GeForce4 TI4200有4PS,8TMU,2VS,FX5800/5900有4PS,8TMU,3VS,RADEON9700有8PS,8TMU,4VS,RADEON9000有4PS,4TMU,1VS.PS是像素單元Pixel Shader Unit,現 在我們把PS定為Pixel Shader Engine的簡寫即像素渲染管線;PSU則是Pixel Shader Unit或者叫Pixel Shader Processor即管線中的像素處理器單元)也就是說組成一條渲染管線至少要有1PS,1TMU,先這麼認為。
看看6800U,具有6個頂點單元;16條渲染管線;16個光柵化引擎ROP,也就是說6800U有16PS,16TMU,16ROP,6VS,好,到此傳統的一條渲染管線是由包括1個Pixel Shader Unit(像素著色單元)+ 1個TMU(紋理單元) + 1個ROP(光柵化引擎)三部分組成的.PS:TMU:ROP=1:1:1,(用到GFTI4200等顯卡上是不成立的,這裡不做更多解釋)

功能性


從功能上說PSU完成像素處理,TMU負責紋理渲染,而ROP則負責像素的最終輸出,換句話也就是說一條完整的像素管線意味著在一個時鐘周期完成至少進行1個PS運算,並輸出一個紋理一個像素,如果運用到6800U上,一個時鐘周期完成至少進行12個PS運算,並輸出12次紋理,12個像素。
來看看X1600,12個PS,4TMU,4ROP(ATI叫RBS,功能差不多)在構架上,X1600每4個像素單元一組,分成3組,12個PS,X1600在一個時鐘周期完成12個PS運算,只能輸出4次紋理,4個像素(ATI在R300以來就使用獨立紋理單元,TMU不在PS內,NVidia每個Pixelshader內包含一個TMU,)換句話說X1600在PS運算上等同於12流水線顯卡,但在紋理渲染和像素輸出上等同於4管線顯卡,所以認為X1600是4管的顯卡!
至於G70,24PS,24TMU,16ROP,如果按照傳統G70也不是24管線的,因為G7016ROP,(16ROP,顯存位寬是256bit,24ROP,384bit的顯存位寬。32ROP,512bit的顯存位寬)而不能達到傳統的,PS:TMU:ROP=1:1:1