看板 WOW 關於我們 聯絡資訊
※ [本文轉錄自 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整數), 所以斜直線在兩個相鄰的像素列上,就很容易出現鋸齒狀的現象。 如下圖左。 http://www.markhamilton.info/wp-content/uploads/2011/08/Antialiasing.png
而AA的作用就是將這種現象柔化(模糊化),如上圖右。 只要將線條邊緣的地方用介於黑色跟白色之間的灰色來填補, (顏色根據該像素距離黑色線條的遠近而有所深淺) 遠遠的看就會發現眼睛不再覺得鋸齒狀那麼明顯(當然近看還是會有)。 回到遊戲來說,由於電腦螢幕也是由像素矩陣所構成, 所以當遊戲內的物體投影到螢幕時, 只要物體與物體相鄰的地方,或者物體的邊緣(與背景相鄰的地方), 如果沒有剛好都在整數數值(也就是剛好落在像素上)的話, 就容易出現鋸齒或失真的現象。 那麼Aliasing要怎麼實作呢,最簡單也最暴力的做法就是超級採樣 Super sampling anti-aliasing (SSAA),又被稱作Full-scene anti-aliasing (FSAA)。 http://www.spec.org/gwpg/publish/fsaa_in_vp10.html 作法很簡單,先把影像放大幾倍: http://www.spec.org/gwpg/images/fsaa_in_vp10_clip_image005.gif
再用Super sampling進行採樣。 通常是根據放大的倍率取對應的像素,上圖就是把上頭有綠點的四個像素的顏色值混合, 再除以四以後填回要填的像素位置。 http://upload.wikimedia.org/wikipedia/en/6/61/Supersampling.png
這樣子做雖然簡單暴力,但缺點就是很消耗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應該可以獲得更好的畫面品質。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 99.116.46.120 ※ 文章網址: http://www.ptt.cc/bbs/C_Chat/M.1411280902.A.A3F.html ONISUKA:轉錄至看板 WOW 09/21 14:28 ※ 編輯: ONISUKA (99.116.46.120), 09/21/2014 14:30:26 ※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: ONISUKA (99.116.46.120), 09/21/2014 14:30:40
arcross: 那我只有ATI的卡怎麼辦?!! 09/21 14:33
ONISUKA: 哈哈 其實我也不知道 但AMD有EQAA跟CSAA很像 09/21 14:35
Layase1: 救命阿 680 4G賣不掉 09/21 14:36
genesys75: ....完全看不懂,可是好像很厲害,只好給推 09/21 15:03
teddywinglee: 比官網的文章好懂一點 但還是看不懂 09/21 15:55
NewCop: 快推,不然人家會以為我們看不懂 09/21 15:56
cloudwolf: 快推!! 可以解釋為硬體不變的情形下畫面可以變好嗎? 09/21 15:59
lienghot: 我一直都用nvidia 09/21 16:16
LVE: 恩 跟我想的差不多 09/21 16:19
Killercat: 其實鋸齒在45度線算很不明顯了 1-10度或者30度都很明顯 09/21 16:24
Killercat: 簡單的說就是一片平滑突然高一快起來 09/21 16:25
uluvu0: 官網說那叫CMAA。CSAA應該是本來就有的,CMAA是新招 09/21 17:29
uluvu0: 反鋸齒我不太懂,以上是我對官網的解讀。 09/21 17:30
dragon6: 其實以目前beta的畫面我覺得就算不開反鋸齒也沒嚴重鋸齒 09/21 17:57
dragon6: 話說畫面變很漂亮但其實顯卡需求更高了 09/21 18:00
qaz12wsx45: 我AMD 280X 玩BETA全開沒差喔 09/21 18:01
forever05520: 怎麼不用TXAA呢,感覺這個也不錯阿XD 09/21 18:17
charmed10i: 快噓不然人家以為我們看得懂 09/21 19:54
Wolfen: 嗯嗯,就是這樣,原來如此 09/21 20:03
zooxalju: 反正WOW畫面再怎麼進化>幅度也相當有限了吧 09/21 20:37
capoboy: 這就是A陣營與N陣營永遠不歇的鬥爭 在每款新作品或續作 09/21 21:39
ONISUKA: 哈哈 原來我眼殘了 不過基本上CMAA或CSAA都是較進階的技 09/22 03:00
ONISUKA: 術,目的就是降低記憶體使用量 09/22 03:00
pipi5867: 現在玩BETA 感覺轉畫面角度跟點選目標都有種延遲感 不 09/22 08:23
pipi5867: 知道為啥.. 09/22 08:23
MingingT: 研究這些演算法真的很有趣啊~ 09/22 09:24
Dopin: 用繪圖卡的表示 ... DX 用的好痛苦呀阿阿阿阿 09/23 00:12
Misher: 還是比不上3A大作 09/01 13:01