精華區beta C_Chat 關於我們 聯絡資訊
作者: 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 ONISUKA:轉錄至看板 WOW 09/21 14:30
zseineo: 推 09/21 14:31
frostmourne: 優文 09/21 14:34
Layase1: 你這個宅宅 09/21 14:35
WindSpread: 長知識推 09/21 14:50
kashiwa27: 2ch很多AA 09/21 14:50
king45682: 你這個宅宅 09/21 14:52
ONISUKA: ... 09/21 14:55
LeftNight: 你這個宅宅 09/21 15:00
e04su3no: 所以我2年前的R6850還能全開嗎? 09/21 15:04
Depersonaliz: 推,簡單易懂,專業優文 09/21 15:46
SkyChaos: 謝謝你的專業文,長知識! 09/23 11:01