抗鋸齒的發展

原文地址 http://www.thegibook.com/tag/unreal-engine-4/
MSAA
一般是由硬件支持的反走樣(anti-aliasing,AA)技術,它在光柵化階段在一個像素區域內對每個像素使用多個深度採樣值,但是每個像素內的這些深度採樣值共享一個着色計算,即是每個像素仍然只執行一次fragment shader的計算,然後計算的結果被複制到每個子深度採樣點上,這樣一個像素內深度測試失敗的子採樣點將不會包含顏色信息,從而能夠更使最終的顏色過渡更平滑。MSAA與SSAA的不同就在於MSAA的每個像素只執行一次着色計算,因此比SSAA具有較大的性能優勢,但是也因此MSAA不能處理由於着色計算中對函數(如高光)採樣不足導致的走樣(如Shader Aliasing),但是由於人眼對於幾何邊緣的敏感度更高於對顏色的敏感度,因此MSAA是一種相當受偏愛的技術。
TAA
即時間反走樣(temporal anti-aliasing),TAA的思路就是每幀還是執行一個正常的對每個像素執行單次採樣和單次着色的計算,但是它在每一幀對攝像機的位置在屏幕區域內執行一個在一個像素尺寸內的抖動操作,這樣如果將鄰近的多個幀的數據混合起來,就相當於對每個像素執行了多次深度採樣,如下圖所示。TAA相當於SSAA的效果,它將多個採樣點從單幀內的空間分佈轉化到時間上,使得每一幀繪製並不會增加多次採樣導致的性能開支,又能達到像SSAA一樣的圖像品質,因此TAA是時下相當受偏愛的一種在Deferred Shading渲染架構下的反走樣技術。
AGAA
與TAA的思路不一樣,AGAA並不累計歷史顏色,因此不存在TAA的歷史累計混合問題,AGAA使用MSAA的思路,在同一幀內使用多個子採樣點,例如8x,由於這在Deferred Shading會導致8x的G-buffer,所以AGAA是利用pre filtering的思路將這8x的材質參數pre filter成2x(或更多,但通常2個足夠)的G-buffer,因此稱作爲Aggregate G-Buffer,這樣8x的深度採樣只輸出2x的G-buffer,這樣就減少了G-buffer的內存佔用以及導致的帶寬佔用性能問題.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章