MLAA(Morphological Antialiasing)
[Unoptimized approach is about 150 cycles/pixel in a CPU implementation.]
http://visual-computing.intel-research.net/publications/mlaa.pdf
Morphological Antialiasing
http://www.realtimerendering.com/blog/morphological-antialiasing/
Morphological Antialiasing
http://www.realtimerendering.com/blog/more-on-larrabee/
More on Larrabee
http://www.realtimerendering.com/blog/larrabee-chip-delayed-cancelled/
Larrabee Chip Delayed/Cancelled
http://www.eurogamer.net/articles/digitalfoundry-saboteur-aa-blog-entry
DF on Saboteur’s PS3 anti-aliasing
http://forum.beyond3d.com/showthread.php?t=55634&page=3
FSAA on SPU – “Saboteur” AA method.
http://blog.us.playstation.com/2009/11/developer-diary-3-the-saboteur-for-ps3/
Developer Diary #3: The Saboteur for PS3
MLAA看來是POST EFFECT AA FILTER?
由於不是真的算SUB PIXEL,某些情形下
可能會判斷錯誤,
Larrabee用這種AA倒是很適合,畢竟Tile buffer
太小,不太適合做MSAA.
沒有ROP的免費效能,做MSAA也不會有好處……
GPU畫完再丟回CPU其實是多此一舉,
GPU效能夠的話,其實用GPGPU做MLAA
會比較有效率。ㄧ切在VRAM搞定。
我想未來幾年應該還是以暴力MSAA為主,
反正記憶體的頻寬還在成長。
8~16X AA兩代以內就會實用。
Console如果用Edram,下ㄧ代應該就達成了。
MLAA 是一種 post processing。它本質上有點類似那種專門放大卡通片的 filter,就是根據一個 block 的「形狀」來決定那個 block 放大時應該是要長什麼樣子。
根據某些測試的結果,MLAA 對「不動」的畫面是很有效的,但是如果是會動的情形,它並不能真的很有效消除所有的 aliasing,特別是那種 pixel popping 的現象。當然,我認為即使是如此,它仍是有它的價值,特別是在很缺乏 FSAA 的硬體上。
但是,MLAA 怎樣有效和傳統的 FSAA 結合,就是別的問題了。一個方法可能是用比較低的倍數進行 SSAA,再配合 MLAA。例如用四倍解析度,再加上 MLAA,然後再縮小成原來的解析度,期望它可以達到超過 4X SSAA 的效果。
在遊戲中,先靠硬體4X MSAA,再用軟體做MLAA,
最後再縮小……效率可能會有點問題.
以4X MSAA要產出720P的畫面的情形,
必須先產出2560×1440的MSAA Buffer
然後必須要把這1440P MSAA Target當Source.
做完MLAA後製,然後再Resolve到720P,
……看起來Overhead會相當大.
MSAA無論如何是ROP硬體處理,不耗Shader運算能力.
對頻寬的消費也只限於Edged Pixel.
而MLAA是全軟體處理,其之所以能高效能,
…..是因為不用管Sub Pixel解析度,
要720P,就真的只要對720P的Buffer做MLAA運算.
不必處理任何多餘的像素…..
由於MLAA處理的Pixel少,所以也不會佔用太多繪圖能力.
但若要對更高解析度的Buffer做MLAA,那效能就不會好.
因為四倍大的Buffer需要4倍MLAA運算量.
這可能會佔用不少繪圖效能,反而比MSAA不利.
而且這時MLAA過程也需要四倍頻寬…..
(每個Pixel都要處理,不像MSAA在非Edge處還可以偷懶.)
所以運用上最好是跑完整個MSAA流程已經Resolve成
4X MSAA的720P畫面後, 再對這720P做MLAA.
…..而不會先做MLAA再Resolve成720P.
(與其那樣,不如直接開8X MSAA可能比較實際)
問題是 MLAA 依賴找 edge 的方式,所以如果已經做過 MSAA,那 MLAA 就不好找到 edge 了,可能會有很多不良的影響。這在 MSAA 倍數低時可能還好,但倍數高時,就沒有太多使用的價值。
當然,如果配合比較聰明的找 edge 方式,可能還是可以直接套用在已經使用 MSAA 的結果上。但是這可能會需要更複雜的判斷,不見得會比較省時間。
以我個人的看法來說,我認為這些方法基本上都只能算是不得已的情形下才採用的方式。要真的有最好的效果,還是要真的去做多 sample(不論是 MSAA 還是 SSAA)才是正途。
話說MLAA這只是利用CELL殘餘性能的方法吧,[GPU有資源就]blah blah….現在就沒資源啊_A_
當然這樣就會扯到360架構多棒,PS3多愚蠢….(反應過度)
ROP有餘力做MSAA/SSAA絕對比這些旁門左道要來得單純許多,只是剛好就是沒Larrabee就沒獨立ROP,這沒辦法….
話說缺乏MSAA硬體的設備好像大概也不會有資源做MLAA是我的錯覺嗎?除了PS3這種東西之外。
回頭看了一下SCC(48core)
Die Size 567 mm^2 at 45nm
1.3B電晶體,1300M/48=27M.
扣掉Mesh連接的面積,估計每Core約24M(含L2 Cache)
由於它還保有Cache線路與P54C的Scalar pipe.
以及x86….
卻比SPE小,可以肯定它沒有空間做LNI單位.
(Larrabee的core含L2,起碼比它大3倍有找….)
好像記錯了SPE應該是18M左右含LS?
所以SCC的core還是比較大一點.
SCC雖然不可能做LNI,
可能還是有實作基本的SSE單位或MMX.
否則P54C就算內建Cache也不會這麼大.
我只有一個意見
X360上的halo3系列沒有AA 讓我非常傷心
如果halo3能用MLAA的話 那就大感謝了
另外一提
MLAA說不定很適合跟TAA一起用?
在某程度上應該很搭