2009年3月16日 星期一

曲面法線貼圖(Normal Map)壓縮技術

新的繪圖卡在幾個不同的地方會應用到壓縮技術。在某些情況下是晶片本身附有這個功能,而在別的情況下則是透過附加的軟體來壓縮,或是支援特定檔案的壓縮格式。
例如,透過S3TC、DXTC的材質壓縮標準,將縮減高解析度材質長度的作法,至今已有好一段日子。這些材質會儲存成繪圖晶片可以讀取的壓縮格式。而這項壓縮技術在處理RGB或RGBA格式的材質時都處理得很好,不會犧牲掉太多影像品質。可是它在處理雙層材質格式時,就會因為過度的人為加工,使得畫質產生失真現象!

千萬別掉入行銷術語的陷阱! 3Dc並不一定表示有更好的畫質喔!3Dc只是減少Normal Map的檔案大小及透過壓縮方式來節省記憶體頻寬而已。遊戲研發者可以選擇透過這種Normal Map壓縮技術來改善效能,或選擇使用更高解析度的Normal Map來創造更細緻的虛擬遊戲世界,然後再進行壓縮。
許多新一代的遊戲,如極地戰嚎(FarCry)都開始採用一種名為曲面法線貼圖技術的先進的皺面貼圖(bump-mapping)技術。就如曲面貼圖一樣,這些曲面法線貼圖同樣可以增加物件詳情而不需要更詳細的多邊形模式。Normal Map是一種包含多邊形物件詳細資訊的特殊材質資料。就跟bump-mapping一樣,這些Normal Map同樣可以在小量多邊形的模型下,增加該物件的精細度。它最大的優點是,光源無論在哪一個角度上看起來都正確無誤。以下就以某套遊戲中人物頭部的特寫:

遊戲研發者首先使用大量的多邊形來創造一組超「精緻」的人物頭部模型,然後在遊戲進行中,則會使用一組多邊形數量較少的「粗糙」模型。這2 組模型的差異處經計算後,可以轉換成詳細記載「精緻」與「粗糙」兩組模型轉換中產生的新材質,再透過Normal Map技術,「粗糙」模型看起來就會跟「精緻」模型的品質差不多。當然,由於曲面法線貼圖內沒有記錄幾何資料,所以這個模型看起來不可能跟「真正」的模型 那樣的「超精緻」程度。
就以賽車中的汽車輪胎來為例說明吧。第一個模型的結構十分複雜,當中包含多種例如胎紋等的詳細資料。而另一個模型則包含16個元素所組成的粗糙圓形輪廓。如果把後者這個模型運用曲面法線貼圖技術處理,它就會顯得非常細膩。不過,你還是能夠辨識出輪胎的圓形輪廓上有失纖細!
使用曲面法線貼圖技術時也有一些缺點。其一,繪圖卡處理器的負荷會加重;因為使用Normal Map就像是把另一個材質貼在像素上一樣。其二,它也需要更多的資料數量。研發者愈想增加畫質的精細度,就要提高Normal Map資料的解析度,當然也就需要更大的記憶體頻寬。雖然Normal Map可以透過DXTC壓縮技術去壓縮,可是這種壓縮技術卻會產生畫質失真的現象。所以現在,ATi就好像跟S3當時開發S3TC壓縮技術來解決大型材質 上的問題一樣,特別針對Normal Map發展一種名為3Dc的壓縮技術。根據ATi的說法,3Dc可以把Normal Map壓縮到4:1的比例,且不會有太多畫質失真的現象。

ATi的3Dc及S3的DXTC比較圖。很可惜的是,我們無法知道上圖所使用的壓縮比例。更何況,3Dc也沒有一定保證會壓縮出更好的Normal Map畫質。不過,幸好這項壓縮技術的誕生,才可讓相同檔案大小的Normal Map卻擁有更詳細的資料。
既然現在可以使用較少記憶體頻寬來呈現出相同的畫質精細程度,遊戲開發者不是選擇提高遊戲的效能,就是選擇透過Normal Map壓縮技術來提高畫質。而且要在遊戲中加入支援Compressed Normal Map的選項也不是什麼大問題,因為只要在處理Normal Map的像素著色單元中多加2道指令就可以了。
3Dc這項壓縮技術會內建在X800及未來以R420為核心全線產品中,然而舊的晶片就無法使用這項技術。到底3Dc會不會加入 DirectX成為標準目前還是未知數,因為決定權在微軟手上,而這看起來將會是ATi的努力目標。無論如何,ATi都指出此項技術是一個開放的標準,也 就是說,任何人都可以不付版稅來使用這項技術。不過,現在好像只有極少數的遊戲支援3Dc壓縮技術,就跟當初魔域幻境(Unreal)是透過外掛的方式來 支援S3TC一樣。

沒有留言: