TXAA打鼓有錯時
雖然TXAA(Temporal Anti-Aliasing)能在大部分的情況下提供良好的圖像品質,但是因為它會比對前後畫格中的資料,所以當遇到新物件出現或是物件移動後露出後方景色時,就會因為緩衝區中缺乏這些圖像資料,而造成無法處理的情況。此外當攝影機旋轉、後退時,也會因為物件投影變型的關係,甚至是小於1個像素的細小的物件(如線、鐵絲、細緻紋理)在移動時,都會產生一樣的問題。
當TXAA因上述原因而發生錯誤時,就會在畫面產生鬼影,或是在局部顯示未經處理的原始圖像,而造成鋸齒、閃爍、雜訊等視覺感。所以在一般的TXAA中,會使用色彩內插等手段降低畫面瑕疵。
▲TXAA對付變型物件的能力很差,可以看到影片中TXAA的紋理細節嚴重失真。
ATAA以光線追蹤彌補瑕疵
ATAA的概念就是以TXAA為基礎,透過TXAA的方式處理畫面中大多數的像素,在部份缺乏歷史資料的區塊以FXAA(Fast Approximate Anti-Aliasing)處理,但是對於處理失敗的部分,就不跟它「硬碰硬」,而是產生1組切割遮罩,並以光線追蹤產生的像素替換這些瑕疵。
在下方ATAA流程圖的Segmentation方塊中,左上角紅色區域代表因攝影機移動而未出現在前一畫格的景色,這區域將套用FXAA處理以節省運算資源(在快速移動的場景中可節省高達15%資源),其於藍色區域則套用TXAA。至於黃色細線的部分則為切割遮罩,代表會發生TXAA瑕疵的區域。
接下來ATAA會使用光線追蹤的方式,來繪製黃色區域的像素。光線會由Microsoft DirectX Ray Tracing(DXR)的光線產生渲染器(Ray Generation Shader)發出,並在Unreal Engine 4引擎中使用與柵格化繪圖管線相同的HLSL(High Level Shader Language,高階渲染器語言)執行,並透過超取樣(Supersampling)方式提升紋理品質。
在效果展示中,NVIDIA使用Titan V 顯示卡,在Windows 10 v1803搭配398.11版驅動程式(支援Microsoft DXR與NVIDIA RTX)環境中進行測試。下方結果圖中的FXAA與TAA(Temporal Anti-Aliasing,即TXAA)採用Unreal Engine 4預設設定值,SSAA(Super Sample Anti-Aliasing)為4x設定值,ATAA則分別在每個像素上套用2、4、8條光線追蹤。
在這個範例中,顯示解析度為1920 x 1080,其中有107,881個像素採光線追蹤處理(占總量5.2%),在2x、4x與8x設定下運算時間分別為4.6、9.3、18.4ms,相較之下FXAA的運算時間僅需0.75ms,但NVIDIA沒有提供4x SSAA的數據。
能將運算時間控制在33.3ms以下代表遊戲將能在30FPS情況執行,而低於16.7ms則能攀上60FPS
受益於DXR能夠解決原本柵格化與光線追蹤無法相容的問題,ATAA才能得以實現。但是NVIDIA也表示ATAA的應用受到光線追蹤的限制,因此讓當下顯示卡的效能難以應付,但是在未來有更多遊戲採用DXR,顯示卡效能也更加成長後,ATAA就能有更大的發揮空間。
加入電腦王Facebook粉絲團系列文章:
顯示卡 4 大反鋸齒技術探討:鋸齒的產生與消除,前處理、後處理之爭
NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(上)
NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)