由於近幾年來消費者對於多媒體應用在PC上的需求日益增加及2D/3D線上遊戲(On-Line Game)的蓬勃發展,促使各軟硬體廠商無論在應用程式介面(Application Programming Interface;API)或是在影像處理器(Visual Processing Unit;VPU)的技術突飛猛進及3D效能上不斷突破。微軟在最近發表最新的API介面DirectX 9.0,此介面除了增加與多媒體PC的硬體相容性、更進一步增強3D繪圖影像的功能。因此,為了呈現視覺效果的最佳化及真實性,軟硬體廠商之間必須透過積極的合作模式和共同擬定解決方案,來滿足消費者對於高畫質視覺效果的需求。
本文章將首先簡略解說何謂DirectX和其運作原理,接下來將介紹DirectX的API介面如何與VPU搭配呈現電影般的視覺效果(Cinematic Visual Effects;CVE)。
何謂DirectX?
DirectX是微軟於1995年開發的多媒體應用程式介面,API介面可使軟體開發人員不需撰寫特定硬體的程式,直接進入特定的多媒體硬體功能區進行程式的編輯,簡化了軟體開發人員在應用研發階段的流程和硬體在相容性測試的工作;微軟當初設計DirectX的API介面最大目的是為了簡易程式設計師們的操作環境和確定與硬體之間的相容性及穩定性。
由於3D繪圖設計師必須在作業系統上開發符合目前潮流的電影般視覺特效,不僅要有最先進的繪圖處理器,提供強大的運算效能,還要有支援多項特殊繪圖功能的API介面才能將畫面品質呈現到最完美的境界;所以微軟便推出最新的API介面DirectX 9.0來搭配新一世代的VPU來達成極致的視覺效能,如繪圖晶片廠商ATi推出的Radeon R9800Pro VPU擁有強大的3D繪圖運算引擎及八條著色管線,每秒可同時輸出超過3 Giga以上的畫素和3億8000萬個三角形物件並支援所有DirectX 9.0的特殊功能。以下是幾種DirectX 9.0所包含的特殊功能:
- ●2.0頂點(Vertex)與畫素(Pixel)遮影功能
- ●128-bit浮點色彩樣式(Floating Point Colour Formats)
- ●高精準度視覺記憶體緩衝區模式(High Precision Frame Buffer Mode)
- ●多重著色目標(Multiple Render Targets)
- ●N-patch替代式製圖及持續性棋盤式效果填充功能(N-patch Displacement Mapping and Continuous Tessellation)
- ●雙邊陰影模板加速功能(Two-Sided Stencil Shadow Acceleration)
- ●全景反鋸齒及支援多螢幕著色功能(Full Scene Anti-Aliasing;FSAA and Multi-Display Rendering Support)
DirectX運作原理
3D繪圖的影像呈現最大的挑戰來自於數據儲存方面,在真實的世界裡,空間可以無限的延伸,但電腦系統卻只能儲存及運算有限的資料。在我們肉眼中所呈現的電腦世界必須先經過一番繁雜的影像處理及運算過程,將所有的數據和指令數位化之後,才能更真實且更有效率的呈現物體在各種角度、位置、光影上的變化。一般來說,電腦上的3D立體影像是經由一連串的物件分解與組合工作來表現,因此不同物件的呈現模式需透過不同的指令和選項來傳達,為了要限制物件表面的資料容量,每一個物件皆由標準的區塊所組成,稱之為原始架構區塊(Primitives)。
目前最常被廣泛使用的原始架構區塊為多角形區塊(Polygons),如(圖一)所示,Polygon亦可定義為三個或多頂點拼湊而成的圖形。雖然多頂點的呈現位置通常被解釋成3D綜合座標軸的相連,但其Polygon自身卻是2D的表面。3D物體的呈現模式是經由一連串的Polygon表面組合而成,如此的組合模式可減少系統對於數據儲存的要求,其原因為電腦只需呈現物件的表面,而少量的多頂點組合可以保有充份資訊以產生大量的畫素。目前較佳的Polygon多為三角形,因為只需三個頂點便可以組合而成一個立體的形狀並且經由多個Polygon組合之後,便可以呈現出任何的3D繪圖形狀,如(圖二)。
《圖三 三角形的光柵(Rasterized)過程或頂點群組轉換成畫素的過程》 | 註:在圖中,藍色方塊為畫素,而三角形中的白色方塊為未能轉換成畫素的方塊。 |
|
由此可見,3D繪圖的呈現過程是一道非常複雜的過程,就如在工廠裡面的製造流程,每一個畫素在呈現於顯示器之前,都必須先經過多道的處理程序,方能合適於輸出。
DirectX與VPU的完美搭配
由於目前大眾對於影像真實性呈現於PC上、電視或電影螢幕上的渴望及需求,促成軟硬體廠商必須更加專注於3D技術的研發與彼此之間的配合,才能滿足消費者。今日的高階VPU利用多重管線技術或是平行處理運算技術,每秒可處理並輸出上千萬個Polygon甚至上億個畫素,由前段文章可知,一個完美的3D圖形皆由多個Polygon所組成,愈多個Polygon所湊成的畫面愈能表現其真實性,其中記憶體的頻寬及架構能影響Polygon的傳輸速度。另外仍需考量VPU是否支援DirectX 9.0的特殊功能,如頂點與物件遮影、全時精準浮點運算、多重著色目標、全景反鋸齒(FSAA)及非等方性波形過濾器(Anisotropic Filtering;AF)。
在今日3D電影動畫與特效的趨勢使然下,目前便有許多的電影動畫特效設計師採用最先進的VPU與DirectX做搭配,以呈現高畫質的目的,如去年奧斯卡最佳電影動畫特效得主魔戒二部曲──雙城奇謀,便是由高階繪圖硬體支援與軟體上的協助。
結語
相信無論是電腦遊戲玩家或者是一般消費大眾,對於3D立體動畫世界的需求將是永無止境的,也因此各繪圖晶片廠商在每三至六個月之間便推出新一世代的高效能繪圖晶片來滿足市場的需求,除了硬體的繪圖晶片核心技術之外,軟體技術如DirectX 9.0也是非常重要的技術,兩者密切配合,才能共同解決並達成各種目標,一齊帶領大眾更進一步的邁向新視覺感官世界。
(作者任職於冶天科技)