Fw: [新聞] WoW 6.0 的圖像引擎進化

作者: ONISUKA (我不是鬼塚英吉)   2014-09-21 14:30:40
※ [本文轉錄自 C_Chat 看板 #1K7d06e_ ]
作者: ONISUKA () 看板: C_Chat
標題: Re: [新聞] WoW 6.0 的圖像引擎進化
時間: Sun Sep 21 14:28:09 2014
對這個領域稍微有點了解,底下介紹給不熟悉電腦圖學的朋友
官方繁體中文版在這:
http://tw.battle.net/wow/zh/blog/15936285/
在講CSAA跟MSAA之前,先要從AA說起。
什麼是AA(Anti-Aliasing)呢?
http://zh.wikipedia.org/wiki/%E5%8F%8D%E9%8B%B8%E9%BD%92
擷取WIKI的解釋:
在3D繪圖時,每個圖形由像素組成,每段瞬間畫面由影格組成,因為螢幕上的像素有限,
如果要表現出多邊形的位置時,因技術所限,使用絕對坐標定位法是無法做到的,只能使
用在近似位置採樣來進行相對定位。由於沒有足夠的採樣來表現出3D世界中的所有物品的
圖形,所以在最後影像顯示上,這些現象便會造成在物品與物品中過渡的邊緣就會產生波
浪狀、圓形、鋸齒和閃爍等失真現象,嚴重影響了畫面的品質。
簡單來說,AA(反鋸齒)顧名思義就是將畫面上的鋸齒給消除掉,
可以把它想成是一種柔化、模糊化的技術。
Aliasing的情形很常在電腦上看到,大家可以打開小畫家,畫一條斜線,
然後再用放大鏡放大好幾倍,就可以看到斜線的邊緣呈現鋸齒狀。
會有這樣的原因,是因為一般點陣圖片儲存的方式,都是用像素矩陣來儲存。
由於斜直線很常會在相鄰的整數X座標上,其Y值剛好差一的情形,
但我們又不能使用絕對坐標(因為像素矩陣是整數X整數),
所以斜直線在兩個相鄰的像素列上,就很容易出現鋸齒狀的現象。
如下圖左。


而AA的作用就是將這種現象柔化(模糊化),如上圖右。
只要將線條邊緣的地方用介於黑色跟白色之間的灰色來填補,
(顏色根據該像素距離黑色線條的遠近而有所深淺)
遠遠的看就會發現眼睛不再覺得鋸齒狀那麼明顯(當然近看還是會有)。
回到遊戲來說,由於電腦螢幕也是由像素矩陣所構成,
所以當遊戲內的物體投影到螢幕時,
只要物體與物體相鄰的地方,或者物體的邊緣(與背景相鄰的地方),
如果沒有剛好都在整數數值(也就是剛好落在像素上)的話,
就容易出現鋸齒或失真的現象。
那麼Aliasing要怎麼實作呢,最簡單也最暴力的做法就是超級採樣
Super sampling anti-aliasing (SSAA),又被稱作Full-scene anti-aliasing (FSAA)。
http://www.spec.org/gwpg/publish/fsaa_in_vp10.html
作法很簡單,先把影像放大幾倍:


再用Super sampling進行採樣。
通常是根據放大的倍率取對應的像素,上圖就是把上頭有綠點的四個像素的顏色值混合,
再除以四以後填回要填的像素位置。


這樣子做雖然簡單暴力,但缺點就是很消耗GPU資源。
因此OpenGL就提出了多重採樣的反鋸齒技術,MSAA(Multisample anti-aliasing),
這個方法可以有效地降低GPU所需的資源。為什麼呢?
由於多邊形的內部通常不太會有鋸齒或失真的情形發生,只會在多邊形的邊緣發生,
所以MSAA先使用Z buffer跟Stencil buffer(按:這兩個有興趣的可以自行估狗)
來找出到底有哪些像素正好是落在多邊形的邊緣,
然後找出有哪些物體或背景會落在這些像素,然後分別對這些點取顏色、混合、平均。
這樣一來就可以省下很多資源,但又可以將輸出的遊戲畫面更柔化。
那麼為什麼WOW要改用由nVIDIA所提出的CSAA(CoverageSampling Anti-Aliasing)呢?
原因是因為CSAA比起MSAA又更省GPU資源,
一般來說,16xCSAA的效果跟8xMSAA差不多,但其性能下降程度只比4xMSAA高一點。
由於許多新的繪圖技術不斷加入WOW,導致WOW對於GPU的需求比過去越來越高,
改用CSAA可以把GPU的資源分給那些新的繪圖技術,讓效能更加提升。
(CSAA的效能提升的原因是採樣的方式不同,由於牽扯到很多技術內容,
所以略過不提,詳情請參考:http://www.anandtech.com/show/2116/9 )
另外對於只支援DirectX 9的顯示卡而言,
可以使用更快速的FXAA(Fast approximate anti-aliasing),
這種作法的取樣方式並不會從3D模型上取樣,而是直接從輸出到螢幕上的圖片來取樣。
不過有點讓人疑惑的就是,nVIDIA在最新推出的Maxwell架構中已不再使用CSAA,
那麼使用這些顯示卡可不可以獲得CSAA效果呢?
由於我們並不知道WOW程式是怎麼運行CSAA的,
如果是寫在WOW裡面,那就不成問題;
如果是需要使用顯示卡的CSAA功能,
那麼使用新一代不支援此技術顯卡(800系列及之後)有可能就得使用其它的技術取代。
(例如用顯卡上的MSAA)
但畢竟這些新的顯示卡也是今年才推出的,短時間應該不用擔心這問題。
而且我想暴雪應該會針對這點做出改良方案吧。
TLDR: CSAA比MSAA更不吃GPU資源,因此更多進階的顯像技術就能充分發揮GPU效果。
所以使用同樣的配備,玩6.0的WOW應該可以獲得更好的畫面品質。
作者: arcross (阿插)   2014-09-21 14:33:00
那我只有ATI的卡怎麼辦?!!
作者: ONISUKA (我不是鬼塚英吉)   2014-09-21 14:35:00
哈哈 其實我也不知道 但AMD有EQAA跟CSAA很像
作者: Layase1 (Layase)   2014-09-21 14:36:00
救命阿 680 4G賣不掉
作者: genesys75 (不宅的某色)   2014-09-21 15:03:00
....完全看不懂,可是好像很厲害,只好給推
作者: teddywinglee   2014-09-21 15:55:00
比官網的文章好懂一點 但還是看不懂
作者: NewCop (新警察裡王)   2014-09-21 15:56:00
快推,不然人家會以為我們看不懂
作者: cloudwolf (狼)   2014-09-21 15:59:00
快推!! 可以解釋為硬體不變的情形下畫面可以變好嗎?
作者: lienghot (一注獨買)   2014-09-21 16:16:00
我一直都用nvidia
作者: LVE (強尼屁股)   2014-09-21 16:19:00
恩 跟我想的差不多
作者: Killercat (殺人貓™)   2014-09-21 16:24:00
其實鋸齒在45度線算很不明顯了 1-10度或者30度都很明顯簡單的說就是一片平滑突然高一快起來
作者: uluvu0 (閒)   2014-09-21 17:29:00
官網說那叫CMAA。CSAA應該是本來就有的,CMAA是新招反鋸齒我不太懂,以上是我對官網的解讀。
作者: dragon6 (阿龍)   2014-09-21 17:57:00
其實以目前beta的畫面我覺得就算不開反鋸齒也沒嚴重鋸齒話說畫面變很漂亮但其實顯卡需求更高了
作者: qaz12wsx45 (我是我自己)   2014-09-21 18:01:00
我AMD 280X 玩BETA全開沒差喔
作者: forever05520 (芵茪)   2014-09-21 18:17:00
怎麼不用TXAA呢,感覺這個也不錯阿XD
作者: charmed10i (iL)   2014-09-21 19:54:00
快噓不然人家以為我們看得懂
作者: Wolfen (新竹中半兵衛)   2014-09-21 20:03:00
嗯嗯,就是這樣,原來如此
作者: zooxalju (不吃魚的貓)   2014-09-21 20:37:00
反正WOW畫面再怎麼進化>幅度也相當有限了吧
作者: capoboy (永遠的殘念門土)   2014-09-21 21:39:00
這就是A陣營與N陣營永遠不歇的鬥爭 在每款新作品或續作
作者: ONISUKA (我不是鬼塚英吉)   2014-09-22 03:00:00
哈哈 原來我眼殘了 不過基本上CMAA或CSAA都是較進階的技術,目的就是降低記憶體使用量
作者: pipi5867 (夏影真是太好聽了..)   2014-09-22 08:23:00
現在玩BETA 感覺轉畫面角度跟點選目標都有種延遲感 不知道為啥..
作者: MingingT (MingingT)   2014-09-22 09:24:00
研究這些演算法真的很有趣啊~
作者: Dopin (ats.twbbs.org)   2014-09-23 00:12:00
用繪圖卡的表示 ... DX 用的好痛苦呀阿阿阿阿

Links booklink

Contact Us: admin [ a t ] ucptt.com