T&L

T&L

T&L技術是最近在圖形加速卡上都可以看得到的規格名稱之一,這個名詞的原來意義是:Transforming以及Lighting,光影轉換。在圖形加速卡中,T&L的最大功能是處理圖形的整體角度旋轉以及光源陰影等三維效果。

技術的應用


T&L
T&L
現在的圖形加速卡大部分都是在處理3D立體圖像等畫面,為了要求圖像的擬真品質能更加精細,在圖形卡上的T&L功能,就能透過角度運算后,將3D對象上所有的點,精確清楚地表現在屏幕上。如果我們把自己當成是圖形晶元的話,那麼當中央處理器(CPU)要我們畫出一張完整的3D圖案時,CPU便要讓我們對畫出什麼東西有個基本的概念,特別是那些東西在我們的腦中並沒有最根本的印象時,CPU只能給我們一個類似建築工地用的設計圖。
這個3D設計圖上有許多的連結點,每一個連結點都可視為一條線的轉折點,通過這些連結點,圖形晶元可以很清楚地將整個對象的結構辨識出來。然而,這些連結點在這張3D設計圖上的位置是固定不動的,換句話說,不管我們從任何一個角度來看這個對象,連結點的位置並沒有變動,變動的只有角度的不同。不過,對象圖案若只進行到Transforming的階段,在對象的表面也只有連結點而已,並沒有加上顏色色塊或任何材質的貼圖表現,因此,很像是立體的3D透視圖。
就好像畫工地設計圖的工程師與畫平面立體圖案的畫家一樣,畫家只畫眼前所看到的立體圖案,雖然也是立體圖案,但是角度卻固定不動;而工程師卻必須仔細地將所有重要的細節描繪仔細,才能讓按設計圖工作的施工人員不管從那個方向切入都能清楚施工方向。這個由CPU送來的藍圖便與工程師那張施工藍圖一樣,讓使用者不管從那一個角度來觀察,都能看到對象整體的3D變化,而這就是Transforming的精髓。

功能實現


若真要細究Transforming到底在圖形晶元里做些什麼事情的話,可能就是在控制上述的連結點吧。要將這些構成3D立體對象的連結點,換算成我們從屏幕上所看見的角度,圖形晶元中的Transforming機制便必須要「假裝移動」這些連結點,因此,即使假裝移動連結點后,原來的3D對象結構仍舊未有改變。而屏幕上的角度只要有任何改變,Transforming機制便要再「假裝移動」一次,在3D動畫的運算中,這是相當頻繁的動作,也因此Transforming功能對圖形晶元而言,在這幾年內相當受人重視。
一個具有Transforming機制的圖形晶元,除了不需再透過系統的平台(處理器、主存儲器以及晶元組等)來進行數據處理,能有效減輕系統的負擔;而且也扮演專為處理上述資料的運算機制,能做出比同時需處理多項資料的系統更加強大,因此,圖形晶元所能畫出的連結點比單靠處理器畫出的要多許多,結構所呈現出來的影像也更加精細。
對於人腦而言,要去理解一個透過連結點所表現的圖案,有點像是小時候的「連連看」遊戲一樣模糊,不過,透過連結點與連結點之間聯機的動作,3D立體對象的表面,便會形成許多個多角形(polygon),而且大部分的多角形皆屬三角形,之後,圖形晶元會在每一個多角形上貼一塊材質貼圖,包含半透明的材質顏色在內,於是一幅清楚而明顯的擬真畫面,就這樣被產生出來了。
另一方面,Lighting的意義則是在光源的投射角度上做出反應。除了固定光源切入的角度外,再配合使用者的觀察角度進行陰影以及反光面的光源變化運算,而透過這兩項功能,一個相當擬真的3D對象就可以呈現在我們眼前。
一般來說,T&L的效能常用「單位時間內所能處理多少個多邊形的連結點變化以及光源運算」為基準。像nVidia的GeForce 2便能在每秒鐘處理2500萬個多邊形,而有的產品甚至能達到3000萬個多邊形的效能。
Vertex Skinning功能
一般人應該不太有機會看到Vertex Skinning這個詞,因為大部分的圖形顯示卡規格說明書中未將此規格說明給列出來,通常只用T&L里的多邊形處理數目來做主要規格介紹。不過,隨著3D動畫軟體與資料與日俱增,Vertex Skinning的重要性也跟著水漲船高。
愛玩電玩的網友不妨回想一下,現在手邊的電玩一定不乏怪獸、英雄、運動球員與角色扮演等的3D動作遊戲,而這些遊戲角色的3D立體圖像要在屏幕上完整呈顯,便需要透過圖形晶元更強大的運算機制。
動畫電影製作技術中,有一種是藉由貼有人骨圖案的衣服來記錄真人動作時的運動角度,以及關節變化情形。相同的情形也常發生在圖形晶元的運作中,尤其是藉由人骨運動的概念來模擬3D對象在動畫上的呈現。換句話說,一個完整的3D對象,若找出其運動的主要架構(以人為例即是人骨),那麼圖形晶元便能藉由架構的呈顯,運作出包在架構外的輪廓以及圖形,並藉由運動模式來運算出動作與動作之間的影像變化關係。
然而,若真要以“人骨”模式來反推3D對象的影像,那麼在影像上會有許多部分的資料,是由圖形晶元自行加上去的,而這個加上去的技術,便稱之為Vertex Skinning。Vertex Skinning這個功能最早是由nVidia所提出,但後來也有其它的圖形晶元製造商跟進採用相同的概念。我們從字面上來看這個名詞,也就是“連結點的加皮動作”。換句話說,連結點與連結點所構成的骨幹,與另一個部位的骨幹間常會有難以連結的距離,而這距離會使得呈現出來的對象無法做到平順圓滑的真實圖像,此時,圖形晶元中的Vertex Skinning機制,便會自動加上連結機制,讓畫面整體呈現起來能更加平順。
一般來說,系統或圖形晶元要處理類似Vertex Skinning技術需要靠中央處理器來執行應用軟體以達成上述效果,不過,也有採用圖形晶元中的運算機制(硬體運算)就可以達成的,例如,ATI便曾對外表示其所採用的4-Matrix Skinning便是以硬體運算的方式達成。
Keyframe Interpolation功能
我們先前提到在人骨上生肉成形的顯像技術,現在我們來認識一下,沒辦法透過骨幹顯像的部分,圖形晶元是怎麼達成的。而這個技術,我們常稱之為Keyframe Interpolation(關鍵圖框的添寫技術)。
實際上3D動畫技術需要用到Keyframe Interpolation的地方可多可少,運作執行時,只需要找出起始動作以及終止動作后,在一定的改變流程下,由軟體或硬體來製作出其餘的連結動作。而這就是Keyframe Interpolation的主要精神。
例如人物動畫的臉部表情,不管你再怎麼用力去拚湊人臉骨幹,但就是沒辦法透過骨幹架構來描繪微笑或是沮喪等表情。這個時候Keyframe Interpolation便派上用場。其實這一點也不難,你只需讓系統找到起始點與終結點等兩個動作的靜止圖案(這兩個畫面便是所謂的Keyframe),再依必要性添寫這兩個畫面之間的主要畫面,那系統便能按照你添寫的方向,完成其餘細部的變化圖案。而這個時候,我們就能再屏幕上看到栩栩如生的人物動畫了 多邊形的處理
對圖形晶元而言,多邊形的處理是最主要的工作之一。包括所有連點必須被解讀成多邊形后,將資料傳回圖形晶元后再傳到屏幕上面,或者是在運算骨幹后,將運算后的多邊形數據,重新回到圖形晶元的運算流程中,以便求出最完美的3D動畫。而T&L的工作,也幾乎都在這些多邊形上一塊一塊地執行,因此,我們若能了解多邊形的處理,也就能清楚認識圖像成形的簡單的步驟了。
一般來說,在屏幕或3D對象上的多邊形,大部分都是三角形所組成的,因此,有的圖形晶元會說明三角形的處理數量來取代多邊形的處理數量。不過,不是三角形數量能夠處理的愈多就是愈好。
我們在先前曾經提到過,工程師所畫出的藍圖必須將所有連結點都畫得一清二楚,而這樣清楚的結構資料,主要是為了讓3D立體對象在任何一個角度,都能有清晰的呈顯以及基本的資料。不過,也就因為屏幕只會呈顯對象局部角度的影像,因此,這個完整的3D對象中,會有許多三角形或多邊形是被其它較前面的三角形或多邊形所掩蓋住的。
我們以3D立體房屋為例,一間3D立體房屋的資料,是需要包含房內所有傢俱,以及對象的3D對象信息,但若我們只能從側面門的角度往屋內看去,則屋內其它3D對象,都會被門旁邊的牆所掩蓋,雖然圖形晶元仍是會運算完整的3D對象所有資料的轉換,但對屏幕來說,真正被用到的(或者說被使用者眼睛看到的)只有一小部分。
因此,人們也開始好奇:既然圖像的成形需要靠許多多邊形來完成,包括多邊形的連結點在內,在某些角度下這些多邊形與連結點是無法在屏幕上顯現的,那這麼完整的資料在計算機里進行傳輸,會不會拖垮圖形晶元的處理效能呢?為了讓圖形晶元的效能發揮到極致,當然,許多廠商也開始重視這個課題,並作出許多解決方案。例如:ATI的Hyper-Z便是針對此種問題,所提出的解決方案之一。而我們會在接下來的幾個單元里,稍微介紹一下這種關係。
多邊形與Fill Rate的關係
另一個重要的話題是三角形的處理與所謂Fill Rate間的關係。要了解這個話題,我們必須先知道在圖形晶元中,專門針對三角形做處理動作的機制又稱為Pixel rendering(“像素繪描”功能),而這個機制每次只能處理一個三角形或多邊形。
上述這段話是一個相當重要的概念,因為Pixel rendering中包含數條管線(pipeline)來處理同一個三個形,如果說三角形或多邊形的像素點比管線數目還要少的話,那這個Pixel Rendering就會有數條管線是處於閑置狀態的。
對3D立體圖像而言,當它所形成的連結點數目愈多,三角形或多邊形的數目也相對增加許多。而這些三角形會因為連結點距離愈來愈近,讓像素點小於Pixel Rendering的pipeline總數的三角形,也跟著變多。而這個情況對圖形晶元的效能是很嚴重的損失。結果,具有許多小三角形的圖案便會讓高Fill Rate規格的圖形晶元無法顯現出它真正的效能。而這也正是為什麼高Fill Rate的圖形晶元,必須搭配正確的顯示設定,才能真正表現出圖形晶元的效能。
硬體加速T&L
T&L是Transform & Lighting的縮寫,意為坐標轉換模塊及光源模塊。具備T&L功能的繪圖晶元僅應用於3D計算機工作站及高端桌上型電腦中。但是從現在圖形處理技術的發展方向看來,T&L的硬體加速功能必將成為未來繪圖晶元必備的特性。
T&L引擎主要是用來進行複雜的坐標處理和光源映像的運算,讓使用者能夠感受到物體真實的光影顯現。過去,在沒有T&L引擎的平台上,大部分坐標處理的工作及光影特效需要由CPU親自來執行,因此佔用了CPU太多的運算時間,從而造成整體畫面不能非常流暢地表現出來。如果應用了T&L引擎,就將大大減輕CPU處理3D時的負荷,並且使CPU能夠有更多的資源來處理更精彩的3D特效,提供更好的視覺效果,所以目前繪圖晶元的3D圖形計算能力已經凌駕於CPU之上了。3D繪圖管線的簡單架構如圖所示。
大家在遊戲中看到的動態影像實際上都是由一連串快速顯示的靜態畫面所組成(基本要求為每秒30張畫面),計算機能夠顯示的靜態畫面愈多,場景展現得就愈順暢。而計算機要繪製出一張靜態畫面必須經過一系列步驟,包括轉換(Transform)、投影(Lighting)、三角形設定(Triangle Setup)及成像(Rendering)等等。3D應用軟體(例如3D遊戲)會提供遊戲進行中的每個動作,包括攝影機的移動、其他物體的相對動作、精細等級的改變、物理引擎的計算等等變化因素。然後將這些數據通過API(如DirectX 或OpenGL)送進3D繪圖管線,處理過後顯示到屏幕上,而T&L指的就是坐標轉換和投影這兩個步驟。
坐標轉換模塊(Transform)參考事先設定的World、View和Projection等三種轉換矩陣,負責計算所有的視點(Viewpoint)資料,並事先決定哪些物體會被繪製在一個畫面上。通常每個物體(包括被較近物體所遮蔽的物體)都會被轉換。最後得出在一般二維坐標上的位置(即在屏幕上的位置)。
光源模塊(Lighting)依據目前空間中存在的光源數量、目前材質的屬性以及與環境光源的種類設定,計算出3D物體受光與材質的混合效應。然後光影投射效果(依據該3D引擎的投影能力)再計算到被轉換過的場景上。
接下來三角形(也就是形成3D對象的多邊形)會由浮點引擎來設定,處理后的資料便被應用在最後一個步驟--場景的成像上。成像引擎(Raster)將決定組成場景的每一個像素的最佳顏色。成像引擎依據若干個因素來成像,包括每個貼上材質或多層貼圖過的像素的基本顏色、光影資料、透明及半透明、煙霧等等。
硬體T&L仍然是一個比較新的硬體3D的技術。現在提供硬體T&L的繪圖晶元廠商大約3~4家左右,以前大多數的廠商仍將其定位在高端3D計算機上。不過現在越來越多的遊戲廠商也將硬體T&L技術的支持加入到3D遊戲當中。像SiS、nVIDIA、ATI都已經在自己的PC圖形晶元產品里提供並支持了硬體T&L技術。