NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(…
我們在前篇文章中幫大家複習了幾種傳統反鋸齒技術,也提到了TXAA與ATAA等新技術。然而在進一步探討運作原理之前,還需要先瞭解TXAA為什麼會造成的畫面瑕疵,再來看看ATAA是如何彌補這些問題,讓3D繪圖的圖像品質更加細膩。<h2>TXAA打鼓有錯時</h2> <p>雖然TXAA(Temporal Anti-Aliasing)能在大部分的情況下提供良好的圖像品質,但是因為它會比對前後畫格中的資料,所以當遇到新物件出現或是物件移動後露出後方景色時,就會因為緩衝區中缺乏這些圖像資料,而造成無法處理的情況。此外當攝影機旋轉、後退時,也會因為物件投影變型的關係,甚至是小於1個像素的細小的物件(如線、鐵絲、細緻紋理)在移動時,都會產生一樣的問題。</p> <p>當TXAA因上述原因而發生錯誤時,就會在畫面產生鬼影,或是在局部顯示未經處理的原始圖像,而造成鋸齒、閃爍、雜訊等視覺感。所以在一般的TXAA中,會使用色彩內插等手段降低畫面瑕疵。</p> <p style="text-align: center;"><iframe src="https://www.youtube.com/embed/uOStBqP6F3M" width="720" height="405" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p> <p style="text-align: center;">▲TXAA對付變型物件的能力很差,可以看到影片中TXAA的紋理細節嚴重失真。</p> <h2>ATAA以光線追蹤彌補瑕疵</h2> <p>ATAA的概念就是以TXAA為基礎,透過TXAA的方式處理畫面中大多數的像素,在部份缺乏歷史資料的區塊以<a href="https://www.geforce.com/whats-new/articles/introducing-the-geforce-gtx-680-gpu#fxaa">FXAA</a>(Fast Approximate Anti-Aliasing)處理,但是對於處理失敗的部分,就不跟它「硬碰硬」,而是產生1組切割遮罩,並以<a href="https://zh.wikipedia.org/wiki/%E5%85%89%E7%B7%9A%E8%BF%BD%E8%B9%A4">光線追蹤</a>產生的像素替換這些瑕疵。</p> <p>在下方ATAA流程圖的Segmentation方塊中,左上角紅色區域代表因攝影機移動而未出現在前一畫格的景色,這區域將套用FXAA處理以節省運算資源(在快速移動的場景中可節省高達15%資源),其於藍色區域則套用TXAA。至於黃色細線的部分則為切割遮罩,代表會發生TXAA瑕疵的區域。</p> <p>接下來ATAA會使用光線追蹤的方式,來繪製黃色區域的像素。光線會由Microsoft DirectX Ray Tracing(<a href="https://blogs.msdn.microsoft.com/directx/2018/03/19/announcing-microsoft-directx-raytracing/">DXR</a>)的光線產生渲染器(Ray Generation Shader)發出,並在Unreal Engine 4引擎中使用與<a href="https://zh.wikipedia.org/wiki/%E6%A0%85%E6%A0%BC%E5%8C%96">柵格化</a>繪圖管線相同的<a href="https://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E7%9D%80%E8%89%B2%E5%99%A8%E8%AF%AD%E8%A8%80">HLSL</a>(High Level Shader Language,高階渲染器語言)執行,並透過超取樣(Supersampling)方式提升紋理品質。</p> <p>在效果展示中,NVIDIA使用Titan V 顯示卡,在Windows 10 v1803搭配398.11版驅動程式(支援Microsoft DXR與NVIDIA <a href="https://developer.nvidia.com/rtx">RTX</a>)環境中進行測試。下方結果圖中的FXAA與TAA(Temporal Anti-Aliasing,即TXAA)採用Unreal Engine 4預設設定值,SSAA(Super Sample Anti-Aliasing)為4x設定值,ATAA則分別在每個像素上套用2、4、8條光線追蹤。</p> <p>在這個範例中,顯示解析度為1920 x 1080,其中有107,881個像素採光線追蹤處理(占總量5.2%),在2x、4x與8x設定下運算時間分別為4.6、9.3、18.4ms,相較之下FXAA的運算時間僅需0.75ms,但NVIDIA沒有提供4x SSAA的數據。</p> <p>能將運算時間控制在33.3ms以下代表遊戲將能在30FPS情況執行,而低於16.7ms則能攀上60FPS</p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn2-techbang.pixfs.net/system/images/453041/original/fabb4e19246ffee6ffdf14ff29b35c46.jpg?1533283325" alt="NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)" width="720" height="405" /><label class="caption" style="width: 720px; display: block; text-align: left; color: #555; line-height: 22px; padding: 0 3px 22px 3px; border-bottom: 2px solid #f0f0f0; margin: 5px auto 1rem auto;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>ATAA的運作流程圖,它會在將畫面切成3類區域,分別套用FXAA、TXAA以及光線追蹤。</label></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn1-techbang.pixfs.net/system/images/453042/original/f0be2e4ed4ac651362f71b5c3c1641be.jpg?1533283332" alt="NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)" width="720" height="408" /><label class="caption" style="width: 720px; display: block; text-align: left; color: #555; line-height: 22px; padding: 0 3px 22px 3px; border-bottom: 2px solid #f0f0f0; margin: 5px auto 1rem auto;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>效果展示取本圖中的3個紅框放大比較。</label></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn0-techbang.pixfs.net/system/images/453043/original/26038afa4f14750cf50c4c584abeaa60.jpg?1533283348" alt="NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)" width="720" height="386" /><label class="caption" style="width: 720px; display: block; text-align: left; color: #555; line-height: 22px; padding: 0 3px 22px 3px; border-bottom: 2px solid #f0f0f0; margin: 5px auto 1rem auto;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>NVIDIA提供多種不同反鋸齒效果,其中Mask欄位即為ATAA的切割遮罩。</label></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn2-techbang.pixfs.net/system/images/453044/original/a52f3f812d0a65dacb199a74b7267352.jpg?1533283367" alt="NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)" width="692" height="950" /><label class="caption" style="width: 692px; display: block; text-align: left; color: #555; line-height: 22px; padding: 0 3px 22px 3px; border-bottom: 2px solid #f0f0f0; margin: 5px auto 1rem auto;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>無AA的時候圖像鋸齒相當嚴重,FXAA則會讓畫面過於模糊,TAA則讓一些次像素的細節消失。</label></p> <p><img style="display: block; margin-left: auto; margin-right: auto;" src="https://cdn1-techbang.pixfs.net/system/images/453045/original/100b3ac461d4846991ab3f4c7e2c36a9.jpg?1533283377" alt="NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)" width="627" height="950" /><label class="caption" style="width: 627px; display: block; text-align: left; color: #555; line-height: 22px; padding: 0 3px 22px 3px; border-bottom: 2px solid #f0f0f0; margin: 5px auto 1rem auto;"><span style="color: #2382c5; padding-right: 5px;"> ▲ </span>ATAA能維持一定的清晰度與更多細節,但是整體效果還是沒有SSAA理想。</label></p> <p>受益於DXR能夠解決原本柵格化與光線追蹤無法相容的問題,ATAA才能得以實現。但是NVIDIA也表示ATAA的應用受到光線追蹤的限制,因此讓當下顯示卡的效能難以應付,但是在未來有更多遊戲採用DXR,顯示卡效能也更加成長後,ATAA就能有更大的發揮空間。</p> <blockquote> <p><strong>系列文章:</strong><br /><a href="https://www.techbang.com/posts/12841">顯示卡 4 大反鋸齒技術探討:鋸齒的產生與消除,前處理、後處理之爭</a><br /><a href="https://www.techbang.com/posts/60189">NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(上)</a><br /><a href="https://www.techbang.com/posts/60233">NVIDIA發表Adaptive Temporal Anti-Aliasing反鋸齒技術,強化TXAA並融入光線追蹤(下)</a></p> </blockquote><a href="http://www.facebook.com/TKbang">加入T客邦Facebook粉絲團</a><img src="http://feeds.feedburner.com/~r/techbang/~4/qv5AAkdU_WA" height="1" width="1" alt=""/>