2009年3月21日 星期六

UE3遊戲引擎深入解剖












介紹:本文將帶領各位玩家深入了解UE3背後的強大技術特性,並實地測試目前N/A數款流行顯卡在已發布的幾款游戲中的實際表現,以此預測未來游戲的需求趨勢
關鍵:UE3/游戲/顯卡/3D技術

前言
1998 年,一款名為《虛幻》(Unreal)的游戲以其夢幻般的畫面震撼了整個業界,然而真正為業界帶來革命的卻是用于開發這款游戲的引擎──Unreal Engine。從那個時候開始,EPIC的Unreal engine便一舉成名,走出幕後成為業界最受歡迎的引擎之一,它打破了原本ID創造的神話,開始與ID的Quake系列引擎一起占據了商用游戲開發引擎 市場的半壁江山。也就是從那個時代開始,PC界的兩大技術龍頭公司你追我趕,在接下來的幾年里陸續更新換代他們的產品,並交替成為Engine界的技術領 頭羊。


2002 年,EPIC推出第二代Unreal Engine,在技術上成功超越ID當時的Quake 3 engine,成為業界新高。不過,隨著顯卡白熱化競爭帶來的技術飛速發展,Engine開發商們也被迫急速更新換代,技術上的進步可以說是日新月異,很 快除了ID在2004年拿出他們的新一代DOOM3引擎外,原本在引擎技術方面鮮有建樹的Vavle也拿出了他們的SOURCE Engine加入競爭,而更加令人大跌眼鏡的是以絕對黑馬姿態登場的德國游戲開發商Crytek,祭出Cryengine這把引擎神器,其對業界帶來的震 撼絲毫不亞于當年的Unreal!!


一 時間在三大巨頭的強勢壓迫下,EPIC不得不讓出還沒戴穩的engine技術桂冠,市場份額也受到不小的侵蝕。也正是在這樣的背景下,促使EPIC不得不 加緊開發下一代Unreal引擎,終于,在2005年的GDC上,EPIC向世人宣布他們的第三代Unreal Engine已經蓄勢待發,即將重新登上Engine技術領頭羊的寶座。EPIC不僅技術上不斷進步,而且在商場上打滾多年的它在競爭策略的制定上也變得 越來越老練,此時engine界又冒出另一家極具威脅性的公司Artificial Studios,該公司的Reality Engine具有跟UE3叫板的實力,然而現今的EPIC是決不會容忍市場上再冒出一個像Crytek這樣年輕力盛的競爭者,于是便及時出手收購,將其扼 殺于搖籃中!!
EPIC在UE3發布會上公布的一些演示視頻可以說是讓玩家們目瞪口呆,相信每個玩家都跟筆者一樣期盼著早日能夠玩到 “Unreal Engine 3 Powered”的游戲,不過UE3之父Tim Sweendy在當時就指出UE3游戲大規模上市還得等到2006年,然而由于種種原因,UE3游戲卻始終姍姍來遲,知道2007年的今天才陸續登場。今 天,本文將帶領各位玩家深入了解UE3背後的強大技術特性,並實地測試目前N/A數款流行顯卡在已發布的幾款UE3游戲中的實際表現,讓玩家了解自己的硬 件在UE3中的表現,此外還可以幫助我們預測未來游戲的需求趨勢。

虛幻引擎3技術縱覽
虛 幻引擎3技術概覽 虛幻引擎3是一個面向新一代游戲機(PS3跟XBOX360)以及DX9/10 PC的先進而強大的游戲開發平台,它為游戲開發者提供了大量的核心技術、數據生成工具和基礎支持。 虛幻引擎3(下文簡稱UE3)從設計之初就以先進的技術特性以及高易用性、擴展性為目標,其每一個方面都具有比較高的易用性跟擴展性,這是其相比其它商用 3D游戲開發引擎的最大優勢。UE3尤其側重于數據生成和程序編寫方面,這樣的話,美工只需要程序員的很少量的協助,就能夠盡可能多地開發游戲的數據資 源,並且這個過程是在完全的可視化環境中完成的,實際操作非常便利;擴張性方面,UE3還為程序員提供一個具有先進功能的,並且具有可擴展性的應用程序框 架(Framework),這個框架可以用于建立、測試和發布各種類型的游戲。 而對于玩家而言,UE3最令人矚目的特點就在于其先進的技術特性,特別是在圖形方面,下面我們就一起來看一下UE3在圖形方面有何高明之處:縱覽UE3的 先進圖形系統,我們大概可以將其分成3大部分來介紹,我們首先來看第一部分

先進的光照跟複雜的shader特效
自 從2004年NV40面世以來,FP16精度的HDR就成為最熱門、曝光率最高的技術,如今新一代的游戲以不在滿足于傳統8BIT LDR精度。新一代的虛幻引擎自然也不會棄FP16HDR于不顧,UE3已經全面支持FP16HDR渲染管道(EPIC稱其為64位色高動態範圍渲染管 道),UE3包含一個具備Gamma校正和線性顏色空間功能的渲染器,它不但可以提供完美的顏色精度,同時還支持諸如光暈、動態模糊、景深等各種後期處理 特效。

FP16 HDR Bloom高亮效果
UE3 的光照系統還支持延遲著色技術(Deferred Shading),該技術可以說是未來游戲的發展趨勢,其原理簡單點講就是先把全景多邊形物體的信息比如位置、法線面、漫反射貼圖、環境貼圖等等渲染到一 個“巨大”的緩衝區里(G-Buffer),而把打光步驟延遲。這樣做的好處一來是可以創建大量的點光源以及產生真實的光照結果,提高畫面的真實度;二來 是可以避免對不可見的點進行光照,節省了資源;不過,延遲著色並不是很適合DX9,在目前的硬件上必須以犧牲MSAA(多重取樣抗鋸齒)為代價,而在新的 DX10硬件上則沒有問題 。值得一提的是,最新版本的UE3已經為DX10做了優化,MSAA已經完全沒有問題,但是目前面世的幾個採用UE3的游戲都是基于老版本的UE3開發, 所以對MSAA的支持還存在各種問題(對于目前的幾個UE3游戲,筆者懷疑它們很可能都沒有使用延遲著色技術,無法直接打開MSAA可能另有緣由),甚至 讓部分玩家產生了“缺乏AA就是UE3的標志”這樣的錯覺……




複雜的材質效果
UE3 支持當前所有常見的逐象素光照技術,支持法線貼圖、位移貼圖、光線衰減函數、預計算陰影遮罩、方向光照貼圖、參數化phong光照以及使用球形 harmonic貼圖的預渲染凹凸自體投影技術 。除此以外美工還可以在自定義的材質上使用帶各項異效果的逐材質光照模型;由此可見UE3已經支持各種高階shader特效,Tim Sweeney就曾指出在《虛幻競技場》中,最長的shader已經高達200個指令!!

先進高效的投影系統
UE3另一個備受矚目的地方就是其先進而高效的動態陰影系統,就目前的資料來看UE3支持下列4種投影技術:


1.採用跟DOOM3類似的動態蠟版緩衝容積陰影技術,能夠此技術能夠讓動態光源位為場景中所有的物體上投射出精確的影子。

2.採用陰影緩衝技術為動態物體投射柔和陰影。此技術還應用了SM3.0的動態分支技術來檢測陰影邊緣需要柔和處理的部分,從而大大減輕GPU的運算量。

3.採用了擁有極高質量和極高性能的預先計算出的陰影遮罩,從而可以將靜態光源的交互現象離線處理,同時保留了完整的動態鏡面高光和反射效果。

4.方向光映射。此技術只有最新版本的UE3才具備,它允許預先計算出無限個光源對物體的靜態投影和漫反射法線映射光照結果,並將該結果保存為一組貼圖的格式,這種做法可以為那些需要高速運行的場景創造出大量的光源效果。



細膩的動態柔和陰影

以 上四種投影技術實現的陰影效果在視覺上都是互相協調相容的,並且可以按照美工的意願自由混合搭配。此外還可以與有顏色的衰減函數相結合,從而可以真實地表 現出諸如方向光、聚光燈光以及投射光等不同光照的投影效果 。多種動態、靜態投影技術的結合運用可以看出UE3非常注重性能跟畫面效果的平衡,在效能可接受的前提下盡量做到畫面最佳化可以大幅提高UE3的應用範 圍,也因此而備受游戲開發商的青睞。

無處不在的Normal Mapping跟virtual displacement mapping
法 線貼圖(Normal mapping)相信大家都已經很熟悉了,基本上現在畫面過得去的游戲多多少少都會用一點法線貼圖。該技術簡單點說就是通過計算高細節度模型的法線信息並 將其保存在一張高壓縮比(3DC/DC5)的法線貼圖之中,然後將這張法線貼圖貼在低細節模型上代替原型的多邊形曲面的光照計算,從而等到一個低多邊形、 高細節的3D模型。雖然它不是什麼先進高深的技術,但卻可以有效提高畫面細節並保証足夠的性能。法線貼圖的首次大規模應用可以追溯到2004年的Far Cry(在FC中,Crytek為他們的Normal mapping技術取了個別出心裁的名稱,叫“Ploybump”),雖然它不是什麼先進高深的技術,但卻可以有效提高畫面細節並保証足夠的性能,所以一 直到今天都深受歡迎。




法線貼圖跟位移貼圖為場景帶來接近上億多邊型的細節度




出去貼圖後可以看到實際場景僅有五十萬多邊型

UE3 中的Virtual Displacement Mapping,也就是我們平時所說的位移貼圖(offset mapping/parallax mapping),其原理跟法線貼圖類似,不過它還對對紋理坐標進行位移,因此凹凸感更強,更加適合表現表面坑坑窪窪的場景。而如今,UE3對于法線貼圖 和位移貼圖的應用又達到一個全新的高度。從《虛幻競技場3》(UT3)到《戰爭機器》(Gear of War),從人物角色到場景環境,Normal mapping跟Virtual Displacement Mapping可以說是無處不在~~兩者的大規模結合應用令游戲畫面立體感倍增,而且效率極高,幾十萬的多邊型就可以創造出接近1億多邊型的細節效果!!


EPIC 還特別為游戲開發者准備了一個分布式計算法線貼圖生成工具,可以讓美工方便快捷地完成法線貼圖的制作。通常在制作一個游戲人物的時候,美工先建立兩個版本 的網格模型:一個只有幾千個多邊型的實時演算模型和一個幾百萬多邊型的高細節參照模型。接著使用該工具的分布式計算功能對高細節參照模型進行光線追蹤計 算,並將其表明光照信息保存為一張法線貼圖,最後再將法線貼圖覆蓋到游戲中的實施演算模型,這樣一個幾千多邊型的低細節模型就能夠擁有接近幾百萬多邊型模 型的細節度!!不過要表現出精細的細節度,還必須滿足一個條件,那就是法線貼圖的分辨率必須足夠高,這對于顯存來說顯然是個不小的挑戰!Tim Sweendy在UE3首次演示時曾表示,UE3中大部分角色跟場景的普通貼圖和法線貼圖的分辨率都將高達2048×2048,按照他當時的計劃,在 2006年左右的中高端顯卡因該可以輕松滿足這一目標,他甚至預測這一時期的高端卡將配備高達1G的顯存!!不過現實卻不像他預測中那麼樂觀,實際上即使 到今天,配備1G顯存的顯卡也只有2900XT唯一一款產品。所以目前面世的幾款UE3游戲基本上都存在材質模糊的毛病,硬件達不到要求,開發商只能妥協 採用分辨率較低的貼圖,所以一些玩家把材質模糊的問題怪到UE3頭上是不公平的。


多邊型數量過百萬的高精細度模型

只有幾千多邊型數量的游戲模型

高精度法線貼圖覆蓋下的游戲最終模型效果


Ageia PhysX驅動下的物理引擎
UE3 的其它先進圖形特性還包括:完全支持多核CPU跟多GPU系統;完全支持室內和室外環境的無縫連接,在任何地方都支持的動態逐象素光照和投影; 美工可以通過一個可動態變形的基本高度圖來建立地形,並使用多層混合材質,這其中包括位移貼圖,法線貼圖和任意複雜的材質,動態的基于LOD的細節以及植 被;另外,地形系統還支持美工控制的自然效果,如平地上的植被,陡坡上的岩石和山頂上的積雪 ;多屏幕分屏渲染;容積環境效果包括高度霧和物理上精確的距離霧等先進特效。


深度霧效果
對 于現代的游戲引擎,物理效果的好壞也是決定一款引擎是否優秀的關鍵因素。在這方面,UE3同樣走在業界的前沿。出了支持傳統的布娃娃系統 (Ragdoll,是目前最為流行的一種非常高級的物理引擎,能夠付給物體以一定的質量,形狀等特性,從而獲得非常逼真的力學動態效果。Half Life 2、Pain Killer等著名游戲均採用了這個物理引擎。 )


布娃娃系統
以 外,UE3還是第一個Ageia PhysX物理卡的支持者,有了Ageia PhysX的助陣,UE3又將游戲的物理效果提升到一個新的層次,其先進物理特性包括:剛體物理系統,支持玩家人物和游戲中的物體產生具備真實物理特性的 互動,從常見的布娃娃骨骼動畫和車輛運動到複雜的物體破壞分解等效果一概俱全。 所有可渲染的材質都含有物理特性,例如摩擦系數等參數;具備物理導向的音效系統;完全整合支持具備完整物理性的車輛,其中包括玩家的操控、AI和網絡功 能;游戲性導向的物理動畫,能夠生成根據物理學而產生變化的動畫;布料物理運動模擬等等特性~~





先進完善的網絡功能
網 絡對戰功能一直是PC游戲的最大優勢,而這一特性也被越來越多的游戲機廠商所重視,可以說網絡游戲正逐漸成為游戲業的未來主流,因此,為游戲開發商提供一 套完整先進的網絡系統就成了UE3必不可少的特性之一:實際上,Internet和局域網游戲對戰早就已經成為Epic的傳統競賽游戲《Unreal Tournament》系列的最大特征之一,虛幻引擎長期以來一直為用戶提供了靈活的高級網絡架構,適合于各種類型的游戲。而如今UE3除了保持傳統PC 游戲的Internet和局域網對戰這一特點外,也讓其它游戲機平台完全支持網絡對戰功能。

全景反鋸齒FSAA技術介紹

FSAA 是 full scene anti-alias 的縮寫,有些人將其譯為全景反鋸齒,還算是合理。不過,倒底 FSAA 是什麼呢?為什麼要「全景」(full scene)?「半景」不行嗎?(其實相對於 FSAA 的是 edge AA,「邊緣反鋸齒」)反鋸齒(anti-alias)又是怎麼回事呢?


要 弄清楚什麼是 FSAA,就得先從 AA(anti-alias)開始。要弄清楚 AA,只好說明一下取樣(sampling)這個麻煩的東西了。對於電腦繪圖有些瞭解的讀者,應該已經知道,目前的電腦繪圖使用的是 2D raster 的顯示方式。也就是說,畫面是由一大堆有不同顏色和不同亮度的小點,組成一個大的方陣。這些小點稱為像點,即 pixel,pixel 是 picture element 的縮寫。很明顯的,像點的數目愈多,圖形就會愈細緻。我們常說的解析度就是指這些像點的數目。例如,640×480 這個解析度,就表示畫面是由 307,200 個像點所組成的。
註:解析度在某些領域有不同的意義。在印刷的情形下,一般所謂的解析度,通常是以 DPI(dots per inch)為單位,即每英吋中含多少個點。像是某個印表機,若有 600 DPI 的解析度,就表示它每英吋可以包含 600 個點。所以,在一張 8.5"×11" 的紙上,就會有 5,100×6,600 = 33,660,000 個點。當然,紙愈大的話,點的數目就可以愈多,這是因為點的大小是固定的。在顯示幕的情形下,不管螢幕有多大,使用 640×480 這個解析度時,像點的數目都是 307,200 個,這和印刷的情形是不同的。當然,通常愈大的螢幕能容許愈高的像點數目。

當然,像點的 數目是有限多的。不幸的是,這個世界並不是由有限的小點組成的。好吧!也許它是由有限的小點組成,但是這些小點的數目非常的多,所以以人類巨大的眼睛來 看,就好像是完全連續的一樣。這樣一來,用有限的像點來表現畫面,就會出現問題。但是,只要像點的數目夠多,而且像點的大小夠小,小到人類的眼睛無法分辨 的情形下,不就沒問題了嗎?當然會有問題,不然就不需要 FSAA 了。

問題在哪裡呢?問題在於取樣的方式。取樣是指把一個連續的訊號,轉換成不連續(離散)的訊號的動作。因為像點的數目是有限多的,所以它一定是不連續的,所以當然就需要這個取樣的動作了。下圖是一個取樣的例子:

**

上 圖中,黑色的曲線是原始訊號,灰色是直線是取樣點,下圖則是取樣的結果。簡單的說,就是把曲線上面每個取樣點(就是那些灰色直線所在的地方)的數值取出 來,這樣就是取樣的動作。一般來說,取樣點之間的距離是固定的。以電腦圖形的例子來看,每個像點就是取樣點。不過,電腦圖形是從一個二維的訊號中,取樣得 到一個二維的陣列。所以,取樣看起來是會損失資訊的。另外,因為電腦是以數位的方式存放資料,所以還要把取樣的結果進行數位化。數位化可以看成是「轉成整 數」的動作。例如,假設訊號的範圍是 0 ~ 1 之間,想要數位化成 8 位元的資料,就是先把它乘上 255(8 位元數字可以表示 0 ~ 255 的範圍),然後把結果以四捨五入或是直接捨去的方式轉成整數。這個動作當然也會損失資訊。不過,這部分和我們的主題無關。

取樣會 牽扯到很多複雜的定理。例如,在做取樣之前,如果先經過一個 low pass filter,把高頻的部分濾掉,再設定適當的取樣頻率(通常是比是最高頻率的兩倍還大)。這樣處理過的訊號再去取樣,就可以完整還原到原來的訊號(指經 過 low pass filter 後的訊號,而不是最原始的訊號)。當然,這篇文章並不是什麼教材,所以不會深入這些地方。不過,low pass filter 等一下會用到,所以先記著比較好。


[Part 2]

現在我們來看看,在電腦繪圖中,取樣的情形是什麼樣子。為了簡單起見,我們用兩個三角形來做例子。如下圖:

**

上圖中,灰色的線是像點的邊界,當然,實際上像點是不會有什麼邊界的,就算有也很細,不會這麼粗。這些邊界只是示意用的。每個像點中的小黑點就是取樣點。取樣的時候,就是取這些小黑點上面的顏色,做為整個像點的顏色。所以,取樣的結果如下圖:


**
我 想大家應該都看到鋸齒現象了吧!這就是一般 3D 繪圖中所遇到的情形。為什麼會這樣呢?其實,這是因為我們在取樣之前,少了一個步驟:low pass filter。因此,原來訊號中的高頻部分並沒有去掉,所以才會出現鋸齒現象。對了,所謂的 low pass filter,就是指一個只能讓低頻成分通過的過濾器。詳細的細節就不在這裡說明了。現在只要記住一件事就夠了:box filter 是一種 low pass filter。也就是說,如果我們把一個像點的範圍內,所包含的訊號取其平均值的話,這樣就會是一個 low pass filter。經過這樣的動作,再來做取樣,會得到下圖:

**

把上面的兩個例子都縮小到實際的大小,會得到下圖:

**

兩者之間的差異應該是相當明顯吧!

有 些讀者可能會對 low pass filter 有疑問。為什麼用了 low pass filter 消除高頻成分就會有比較好的效果呢?實際的理論相當複雜,所以不在這裡多說。不過,如果以人眼實際上的觀察方式來看,倒是很合理的。因為,人眼內部的感光 細胞,是會收集它的感光範圍中的所有能量,再送到腦部。所以,可以看成感光細胞其實就已經包含了一個 box filter。因此,在進行取樣之前,先做 box filter 是很合理的做法。

有一點要特別注意:如果顯示系統的解析度非常的高, 遠遠超出人眼可以分辨的範圍,那麼 anti-aliasing 的效果就會慢慢消失。以一般習慣上的閱讀距離來說,人眼很難分辨超過 300 DPI 以上的彩色點。也就是說,對一個對角線為 15" 的顯示器來說,如果解析度高達 3,600×2,700 的話,那就沒有做 anti-alias 的必要了,反正人的眼睛也沒辦法看到這麼細的像點。不過,貼圖的 filtering 是不同的事,無論解析度有多高,都需要適當的貼圖 filtering 才不會出現不正常的情形。


[Part 3]

現 在來看看 3D 繪圖晶片要怎麼處理這個問題。目前的 3D 晶片,幾乎都是用 by primitive 的方式畫出整個畫面的。所謂的 by primitive,就是指一次畫一個 primitive,把每一個 primitives 都畫好之後,整個場景就畫好了。Primitive 是指三角面和由許多三角面組成的簡單東西。這種方法和 ray tracing 或是 scanline renderer 是不一樣的。這兩者都是分別對畫面上的每個像點,去決定它應該會是什麼顏色。

另外,現在的 3D 繪圖晶片通常是利用 Z buffer 來去除隱藏面(即被其它三角面蓋住的部分),而不對三角面做任何排序動作。這當然是有原因的,因為如果對三角面做排序,再以「由後面往前面畫」的方式來去 除隱藏面的話,有時就需要把某些三角面切開,還有一些很麻煩的東西,這樣的工作並不適合由記憶體很少的 3D 繪圖晶片來做。當然,讓 CPU 來做這個工作,速度也不會很快。無論如何,Z buffer(或是其它類似的方法)還是目前最有效率的方法之一。

現在來看看 3D 晶片要怎麼做到 anti-alias。一個最簡單的想法是,讓 3D 晶片在畫三角面的時候,就自動產生適當的「佔有率」數字,即這個三角面在某個特定的像點上,所佔有的面積的比例,而該像點的顏色則會乘上這個比例。這樣一 來,就可以畫出平滑的三角面了。當然,對於三角面來說,三角面的內部像點所佔的面積比例當然都是 100%,只有在邊緣的地方才會有小於 100% 的佔有率。所以,這個方法也稱為 edge anti-alias。

不過,這個方法有一些問題。例如,當兩個三角面有重疊的時候,「佔有 率」的計算就會出問題,因為 3D 晶片只知道將被蓋住的三角面,其佔有率的數字;但是,它卻沒辦法知道被蓋住的三角面,倒底是佔有哪些部分。最嚴重的問題,則是出現在三角面有交叉的時候。 這時,因為交叉的地方是由 Z buffer 算出來的,所以根本沒辦法算出正確的「佔有率」數字。所以,除非三角面都沒有交叉,而且重疊的情形都還在合理範圍,不然的話,這個方法是不能用的。如果三 角面都已經排序且切割過,那就可以使用這個方法。但是,就如同前面所說的,目前不太可能即時做這些動作。

如果需要畫的東西不是三角面,而 只是線框的話,那麼 edge anti-alias 就很適用了。因為,線框很少會有交叉的現象(兩條線就算是交叉,也沒人會注意到吧!),而且,兩條線重疊的情形也不多。所以,edge anti-alias 非常適用在線框繪圖。某些應用像是 CAD/CAM 等等,特別常用到線框繪圖,所以他們會喜歡用 edge anti-alias。不過,對於模擬、視覺化、或是 3D 遊戲來說,線框繪圖很少用到,所以 edge anti-alias 就不太適用。

另 外有一點要注意的是,edge anti-alias 只處理三角面的邊緣部分。當然高頻成分也是在邊緣最為明顯。但是,如果三角面有貼圖的話,還是可能會出現高頻成分。不過,一般來說,貼圖的 anti-alias 通常可以很容易用雙線性內插(bilinear interpolation)和 mipmap 來解決。這部分比較複雜,以後再特別討論。

說了這麼多,終於要說到 FSAA 了。為什麼叫 full scene 呢?它就是指對整個畫面做 anti-alias,而不是像 edge anti-alias 只是對某個 primitive(如三角面或是線)做 anti-alias。那麼,要怎樣對整個畫面來做 anti-alias?

一個簡單的方法,就是使用在每個像點中,取幾個 sub-sample 點,然後把這些 sub-sample 的顏色取平均值,做為這個像點的顏色。這樣的方法就稱為 super-sampling。很明顯的,這種做法完全不需要什麼特別的設計,不用切三角面,不用排序,直接就可以得到 anti-alias 的效果。所以這是一種 FSAA 的方法。

最簡單的 super-sampling 方法是 ordered grid super-sampling,簡稱 OGSS。所謂的 OGSS,就是把直接把解析度提高,再用 box filter 把它縮小。例如,假設要對 640×480 的解析度,做 4 個 sample 的 FSAA,那就把解析度提高為 1280×960,畫出整個畫面,然後再用 box filter 把它縮小到 640×480。為什麼稱為 OGSS 是因為它的 sub-sample 點等於是排成方形,如下圖所示:


***

上 圖中,左邊是原來的解析度方式,大的灰色圓點是原來的取樣點。放大解析度為四倍之後(每邊各兩倍),會變成右邊的情形。這時,在新的解析度下,新的取樣點 是紅色小點。對每個原來的像點來說,它會取內部的四個紅色小點的平均值,做為它的取樣值。所以,這些紅色小點就是它的 sub-sample 點。可以看出,它的 sub-sample 點正是排成方形,所以才會叫做 OGSS。


[Part 4]

OGSS 有什麼缺點嗎?要看出它的缺點,得先看下面這張圖:


***

上 圖中的這些三角面,顯示出邊線的角度和 aliasing 程度的關聯。從最左邊的三角形來看,可以看出完全垂直線、完全水平線和 45°的斜線,都不太會顯示出 aliasing。但是,接近垂直或接近水平的線,會顯示出最明顯的 aliasing。不幸的是,因為 OGSS 的 sub-sample 點是垂直和水平的排列,所以在處理接近垂直或水平的線時,通常只有兩個 sub-sample 會發生作用。如下圖所示:

**

在 上圖中,當深藍色的三角形經過這些 sub-sample 點時,可以看出這三種方法,會得到明顯不同的結果。在兩個 OGSS 的例子中,每個像點都剛好有一半的 sub-sample 點包含在三角形裡面,所以它們的表現是完全相同的。當然,如果三角面再延長一些,4 samples 的 OGSS 的表現就會比 2 samples OGSS 要好一點。但是,這已經可以顯示出 OGSS 的表現,在接近垂直或接近水平的線,是不太好的。事實上,在線愈接近 45° 時,OGSS 的表現就會愈好。但是,前面也提過,45° 的線其 alias 的現象並不會很嚴重。再者,如果線真的是 45°,那 OGSS 的結果還是不會好,因為每個邊緣的像點,都會剛好有三個 sub-sample 點在三角面裡面(或外面),而正確的值應該是兩個。

如果 把 sub-sample 點稍微轉動一下,情形就會改觀了。如果不希望在接近 45° 的時候會有較好的結果,那只要把 sub-sample 點轉動一些角度,就會讓接近垂直或水平的線對每個像點的 sub-sample 點「看起來」像是 45° 了。在上面的圖中就可以看到明顯的結果。因為 sub-sample 被轉動某個角度,所以這個方法稱為 rotate grid super-sampling,簡稱 RGSS。

很明顯的,RGSS 是不能用「提高解析度」這個方法來達成的。那要怎麼做到 RGSS 呢?基本上,方法並不難。只要在畫三角面的時候,把每個三角面稍微移動位置,這樣就和移動像點的取樣點,是同樣的效果。所以,要做到像上圖的 RGSS,只要把整個場景畫四次,每次都稍微移動每個三角面,到適當的取樣點位置(移動的範圍會小於一個像點的大小)。最後,再把這四張圖合起來,對每個 像點取平均值,就可以得到結果了。傳統上,這可以利用 accumulation buffer 來達到。不過,accumulation buffer 需要很大的頻寬(每次從 frame buffer 複製到 accumulation buffer 需要兩次讀取和一次寫入),而且 accumulation buffer 通常需要比一般 frame buffer 更高的精確度才行,所以又需要更多頻寬。再加上 4 samples 的 FSAA 已經需要把整個場景畫出四次了,所以速度一定會很慢。

另一個方法是利用多個 frame buffer,這也是 3dfx 的 T-Buffer 的原理。這個方法是讓顯示晶片保有四個不同的 frame buffer,並把四個 sub-sample 的圖分別畫到這四個 frame buffer 中。而顯示晶片的 RAMDAC(把 frame buffer 輸出到螢幕上的裝置)則自動把這四個 frame buffer 的內容做平均。這樣一來,就不需要高精確度的 accumulation buffer,而且也沒有明顯的額外頻寬需求。因此,對於 sample 的數目很少的情形下,這的確是個取代 accumulation buffer 的好方法。

現在 DirectX 8 中的 DirectGraphics 也加入了 multi-sample buffer 的支援,基本上就和 3dfx 的 T-Buffer 是完全相同的。所以,將來的 3D 顯示晶片都很可能會支援這樣的功能。

投影機解說



  • 從廣義上來說,當前市場上銷售的投影機主要有CRT投影機、LCD投影機、DLP投影機三大類型。它們的技術特點是什麼,是怎樣工作的,下面就上述三種投影機的分別作簡要的介紹。
    從目前的市場上來看,在這三種類型的投影機中占絕對主流地位的是LCD投影機,也就是大家常說的液晶投影機;少量的為DLP投影機、二次元CRT投影機,其中CRT投影機已經很少見到了。
    先談談CRT投影機,CRT(Cathode Ray Tube)是陰極射線管的意思,其實是應用最為廣泛的一種顯示技術。 通常所說的三槍CRT投影機就是由三個CRT投影管組成的投影機,三個CRT投影管分別發出高速高壓電子,轟擊紅、綠、蘭三種元素顏色的螢光粉,構成了我們肉眼看到的千變萬化的顏色。三次元CRT投影機顯示的圖像色彩豐富,還原性好,具有豐富的幾何失真調整能力;但是缺點是投影圖像的亮度很低,操作複雜,體積龐大,對安裝環境要求較高,並且價格昂貴,所以目前已經基本退出市場。
    再看看DLP投影機,DLP(Digital Light Processor)是數位光路處理器的意思,其核心元件和技術來自著名的美國德州儀器公司。DLP投影機以DMD(Digital Micormirror Device)數位微鏡作為成像器件。 DLP投影機的技術是一種反射式的投影技術。其特點是圖像灰度等級提高,成像器件的總的光效率大大提高(這對投影機時非常重要的),對比度非常出色,色彩銳利。但是缺點是目前DLP投影機的解析度較低,還難以做到二次元XGA標準,並且投影圖像的均勻度不太好、有待提高,而且投影的圖像色彩與圖像源略有偏差,技術有待進一步成熟。目前市場上有少量的DLP投影機銷售,價格相對CRT投影機來說較便宜。
    LCD ( Liquid Crystal Display)液晶投影機,是目前投影機市場上的主要產品。液晶是介於液體和固體之間的物質,本身不發光,工作性質受溫度影響很大,其工作溫度為-55度——+77度。投影機利用液晶的光電效應,即液晶分子的排列在電場作用下發生變化,影響其液晶單元的透光率或反射率,從而影響它的光學性質,產生具有不同灰度層次及顏色的圖像。 LCD投影機色彩還原較好、解析度可達三次元SXGA標準,體積小,重量輕,操作、攜帶極其方便,因此成為投影機市場上的主要產品。

[影音]Pioneer 簡介史


先鋒於2001年7月發表新標語「Sound. Vision. Soul」傳遞分享影音娛樂以及提昇心靈的承諾。

■Sound
是指Pioneer最初始的根源--音響事業,而同時也代表Pioneer是經營健全的企業。
■Vision
是指我們以DVD及新世代顯示器-電漿電視為核心的影像事業,同時亦表達我們對未來的視野及決心。
■Soul
強調的是我們將昇華影音娛樂的決心,Pioneer深信藉由聲音與影像的力量將帶給人們觸及靈魂深處的感動。

Pioneer相信娛樂是一種憑藉著聲音與影像,即可深觸人心的力量!正因如此,Pioneer提供了最好的電漿電視以及DVD,讓全世界都能感受影音娛樂不可思議的神奇魔力,身為一個娛樂創造公司,如何成就舒適的娛樂生活將是我們的目標。

先鋒是影音娛樂及光碟技術的世界先驅,運用先進科技投入家用影音、車用影音以及商業用市場,展現對消費 者的熱情與娛樂事業的重視。Pioneer起源於1938年,並以揚聲器製造與銷售為主,「讓更多的人聽到更感動的聲音」是創辦人松本望先生創立先鋒公司 的理念。而這正是目前Pioneer集團所繼承的集團理念-與更多人分享感動-。我們認為感動這個字眼傳達了先鋒與客戶分享情感的經驗,而非只是單純提供 硬體產品。

先鋒正如其名,不斷創新成為業界第一。因此先鋒在1980年成為世上第一個開發出雷射影音光碟(LD)的公司,同時帶領娛樂光碟技術邁開一大步,求新、求進 步的精神,使得先鋒陸續成為發表DVD播放機、有機冷光顯示技術(OEL)、電漿電視以及DVD錄放影機(DVD-RW)的先驅;因此先鋒被視為融合聲音 與影像技術,成為影音娛樂的創新者;現在,先鋒也將維持高標準的品質管制直到消費者達到最高的滿足感。

台灣先鋒公司創立於1989年,是先鋒於台灣地區的子公司,我們的任務是提供台灣消費者最先進及最佳品質的的影音產品;為了服務各地先鋒影音器材的愛好者,我們在中壢、台中、高雄等地成立營業所,目的是讓台灣的AV玩家也能享受頂尖、時尚的影音生活。

Pioneer 的歷史成就

1937 公司成立,並開發出日本第一支Dynamic Speaker
1962 領先全球研發銷售組件式喇叭
1975 領先全球研發銷售改裝用汽車音響主機
1977 在美國推出全世界最早的雙向定址式有線電視系統
1980 研發銷售全球第一臺家用LD (Laser Disk) 播放機
1982 領先全球研發銷售 LD 卡拉OK系統
1990 研發銷售全球第一套GPS車用衛星導航系統
1996 研發銷售全球第一臺DVD/LD兼容播放機
1997 全球第一將OEL(有機電致發光體)技術商品化,
    置入汽車音響主機中
1997 研發銷售全球第一臺XGA等級(1024*768)的電漿電視
1999 研發銷售全球第一臺家用DVD錄放影機 (DVD Recorder)
2001 研發銷售全球第一臺PC用 DVD-R/RW 燒錄機

請別為了我們擁有那麼多世界第一而訝異,因為創新技術、豐富您的視聽經驗本來就是Pioneer的使命。