長期以來,3D影像應用程式的設計人員在使用電腦創造即時互動式的人物、物件及環境時,總是受到多種限制。其主要原因在於可獲得的處理能力受到侷限,即現有的圖形硬體在靈活性方面受到很大的制約,而且專業繪圖硬體的高單價也構成了另一個制約因素。在中央處理器(CPU)上執行運算與在圖形處理器(Visual Processing Unit;VPU)上執行運算相比,總是存在著顧此失彼的情形。
前者由於其通用性和可程式化設計的特性允許有更大的靈活性,而後者由於採用與硬體圖素管線連結(Hard-wired)和高度最佳化的架構設計進而獲得最佳的繪圖效能。一方面,VPU的處理速度正在快速攀升,如市場上最先進的VPU擁有強大的3D繪圖運算引擎及八條著色管線,每秒可同時輸出超過3Giga以上的圖素和3億8000萬三角形物件,推動影像製作技術取得相當大的進展;同時,許多以前由CPU承擔的作業正逐漸轉由VPU接管。另外,仍然有許多有趣而實用的圖形技術,因為需要速度與靈活性的整合,而現有的CPU和VPU都無法充分地勝任,因而一直未能呈現完美的視覺境界。
因此目前市場需要的是一種能夠將專用VPU的速度及最佳化特性與CPU的靈活性及可程式化特性結合起來的新技術,這種技術將使互動式影像的播放速率與視訊效果達到無限逼真的境界。試圖引入此項技術的嘗試已經獲得了成功,它在增加程式設計人員可利用效果的數目方面取得了很大突破,但在多功能性和視覺效果方面卻仍然受到一些限制。
SMARTSHADER技術
由繪圖技術大廠開發的SMARTSHADER技術將個人電腦的圖形效果大幅提升。它允許軟體程式設計人員使用許多影像技術,而這些技術在不久之前還僅能應用於由電腦製作的非互動式電影和一些特效中。借助SMARTSHADER技術可以應用到互動式的線上遊戲(On-Line Game)、Internet以及數位內容創造等應用程式中。
SMARTSHADER技術代表新一代的可程式化、硬體加速的圖形管線。此技術在設計時考慮了盡可能地提升作業效率,並將常見的效能瓶頸,特別是記憶體傳輸頻寬的侷限降至最小。SMARTSHADER技術是首度對由微軟在其DirectX 8.0中推出的頂點遮蔽器(Vertex Shader)和圖素遮蔽器(Pixel Shader)程式設計語言進行擴充及延伸。這些遮蔽器語言將可程式化設計的靈活性引入圖形硬體;但實際應用表明它們仍然存在著一些缺陷,這就為進一步改進提供了很多機會。
根據由3D影像應用程式設計師及研究專家提供的建議,軟硬體廠商的合作,對DirectX 8.0遮蔽器的靈活、效率及可用性進行了眾多改進。雙方共同研究的結果匯集在新推出的DirectX 8.1中,它將SMARTSHADER技術的功能呈現在程式設計人員面前。
為了使影像能在更流暢的畫面速率下播放,在每秒鐘內圖素遮蔽器必須執行數千萬次,因此播放效能是考量的一個重點。每當一個圖素經過著色管線時,由於資料需從紋理記憶體、色彩深度緩衝記憶體和顯示緩衝記憶體中讀出並寫入,所以要佔用記憶體傳輸頻寬。如果可以減少螢幕上每個圖素需經過著色管線的次數,就可以降低記憶體傳輸頻寬的佔用量,而且圖素遮蔽器對播放效能的不良影響也會因此而降到最小。DirectX 8.1圖素遮蔽器在執行一次著色時最多可以允許六個紋理取樣和混色。這意味著在以前的DirectX版本中需要經過多次著色才能達到的效果,現在經過更少次數的處理就可以實現;而以前執行速度較慢但卻很有用的效果,現在實現起來會更具實用性與效率。
然而要創造逼真的現實場景需要使用許多紋理,這種場景中包含各種凹凸表面,並混合來自多種光源的擴散光、鏡面光和非均勻照明效果,以及產生逼真視覺的反射光和陰影等。現實中許多物件依照簡單的算術函數改變其形狀。這些函數可以使用頂點遮蔽器設計成模型,並應用到一個物件的每個頂點位置的變化上,創造出逼真度極高的過渡性變形動畫。這一技術有極廣泛的應用,如製作水波、飄揚的旗幟和風中的披肩,如(圖一)所示,以及一些飄浮的物件,如肥皂泡沫等如(圖二)
DirectX 8.0圖素遮蔽器最多可以使用四個紋理定址指令和八個紋理混色指令,但透過這些有限的指令,仍然無法實現眾多視覺效果。可程式化圖素遮蔽器的最強大的功能是由紋理取樣和定址指令提供,而DirectX 8.0的圖素遮蔽器僅能使用四個這樣的指令,侷限於僅可提供四十種有用的紋理定址方式。而DirectX 8.1的圖素遮蔽器則將紋理取樣指令與定址指令分開,使位址遮蔽器可以使用最多十四條指令。這一變化使紋理的取樣和定址可以透過幾乎不受限制的方式進行,而且能夠實現眾多DirectX 8.0不能實現的視覺效果。
DirectX 8.0圖素遮蔽器另一個可供進一步改進的方面是其指令集。位址遮蔽器和色彩遮蔽器使用了兩個不同的運算指令集。色彩遮蔽器的指令基本上都是簡單的算術運算,而位址遮蔽器的指令相對而言則比較復雜而且缺乏靈活性。DirectX 8.1簡化了圖素遮蔽器語言,使色彩遮蔽器指令集可以同時用於位址遮蔽器。除使圖素遮蔽器語言更易於編寫之外,還免除了在單一遮蔽器中使用兩個不同語言會引起的資料類型不相容等問題,這意味著許多效果現在可以透過比以前更少的指令就可以實現。
圖素遮蔽器的特殊視覺效果
眾多特殊類型的圖素效果可以藉助SMARTSHADER技術得以實現。大多數頂點遮蔽器效果包括物件形狀和位置的變化,而大多數圖素遮蔽器效果則集中於對材料屬性和表面紋理的控制。這些效果大部份是透過紋理定址指令,對經過圖素遮蔽器的紋理座標執行算術運算,然後使用修改的座標執行依賴性紋理讀取來實現。
多光源的單次、完全圖素著色
採用SMARTSHADER技術實現的大多數效果都包括來自多源的完全圖素照射法。使用所有六個輸入到圖素遮蔽器的紋理,凹凸表面的物件僅需經過一次著色處理就可以由來自多光源的反射光進行精確的繪製。光源可以包括環境對應(提供逼真效果的反射光)、點光源、聚光燈、發光物件以及其它光線資料,如(圖三)所示。
《圖三 三個不同色彩的聚光燈照射下的物件 圖註:SMARTSHADER技術可以對這種影像進行單次著色,而以前需按比例進行數次著色才能完成。》 |
|
全彩Phong陰影法
Phong陰影法是一種算術模型,它構成了當今三度空間應用程式中大多數光線運算的基礎。它將輸入光分為三個元素(環境光、擴散光和鏡面光),並為照射的表面賦予屬性,以決定觀察者從任何給定的點觀察時所看到的最終色彩。使用以下方程式:
由於此方程式非常復雜而且包含了太多變數,在大多數應用程式中僅使用了簡化的近似值。SMARTSHADER技術則允許實現完整而精確的Phong陰影法方程式,甚至對於多光源的情形也是如此。可以使用特定的紋理對應圖,針對任何表面相應地改變方程式中的任何變數,如k(用於控制亮度)。如此,任何類型的材料都可以繪製出相當逼真的效果如(圖四)。
《圖四 使用真實和想像材料進行完全圖元Phong陰影法處理的範例》 |
|
非均勻光線照射法
雖然Phong陰影法對於表面基本光滑的材料能達到較好的效果,但現實中的許多表面卻是由眾多極小表面或微粒組成的,如衣物、頭髮和沙灘等。這個特點使它們以非尋常的方式反射光線,而且僅可借助於一種稱為非均勻光線照射法的技術才可以在電腦螢幕上正確地仿真顯示。非均勻光線照射法使用一些復雜的函數,稱為BRDF(雙向反射分佈函數),決定光線如何作為一個視角函數從表面上反射回來。這些函數的結果儲存在特殊的紋理色彩對照表中,對於每個特定的表面類型而言,參照色彩對照表是唯一的途徑,(圖五)便顯示了一個範例。
《圖五 使用非均勻光線照射法對頭髮的處理模型 圖註:兩幅圖片顯示了光源移動時反射光發生的變化。》 |
|
進階凹凸貼圖
凹凸貼圖已被證明是在不需要大量額外幾何資料的前提下改進表面顯示真實度的一種很有用的技術。環境對應凹凸貼圖(對於發光的表面效果最佳)和Dot Product 3凹凸貼圖(對於無光澤表面效果最佳)都可以使用圖素遮蔽器得以實現。SMARTSHADER技術能呈現更高階的凹凸貼圖效果,例如自成陰影凹凸貼圖(又稱為水平貼圖)以及合併多個凹凸貼圖的能力如(圖六)。
《圖六 使用疊加凹凸貼圖繪製的水波 圖註:從中心擴散開的水波疊加在湖中移動的水波上。著色此影像僅需連結四個三角形。》 |
|
過渡紋理
精細的紋理一般需要大量的圖素記憶體儲存,這將限制紋理的變化數及可使用的精細資料數量。現在,借助於SMARTSHADER技術可以使用算術函數創造出更多精細而有趣的紋理,而僅需佔用極少甚至不佔用任何記憶體,因為它們是在圖形處理器上生成的。(圖七)顯示了此技術的一個範例。
結論
透過SMARTSHADER技術3D影像遊戲及其他應用程式的設計人員能夠充分地發揮創意和想像力,透過一個可程式化的圖素管線完成幾何處理和著色處理作業。頂點遮蔽器能夠實現自訂的變形和加亮效果,並能夠對三度空間人物、物件和環境的形狀及位置進行控制。而圖素遮蔽器則可以繪製眾多不同的完全圖素效果,使物件的自然屬性得到高精確度的仿真。如頭髮、衣物、金屬、玻璃和水等,在以前的即時應用程式中描繪這些物件一直是件很困難的事。一些重要的視覺提示,如來自多光源的反射光、高反差和陰影等,現在可以利用更快的速度和精確度進行著色。
SMARTSHADE技術支援一次著色最多處理六個紋理,使指令數增加為原來的兩倍,並使用改進的語言提供更大的靈活性和通用性。這些改進擴充了圖素效果的數目,並在節省記憶體傳輸頻寬的情況下改進了影像效能,而且允許在更多的遊戲和其他應用程式中使用此項技術。採用SMARTSHADER技術將加速圖形效能改進的進程,並令電腦螢幕的影像顯示效果比以前任何時候更接近於電影效果。(作者為ATi台灣分公司亞太區行銷經理)