決戰(zhàn)性能之巔!NV雙芯旗艦GTX590評測
雖然DirectCompute的主要任務(wù)是用來處理非圖形運算,但很多時候它還是需要做一些圖形相關(guān)的擦邊球任務(wù)、或者是輔助圖形渲染,比如說視頻數(shù)據(jù)處理、物理運算、人工智能等,這些操作最終還是需要通過顯卡輸出至屏幕,因此計算著色器會經(jīng)常與像素著色器打交道,當像素著色器使用到計算著色器的新特性之后,就會衍生出一些意想不到的新特效。
8.4 DirectCompute11的妙用:順序無關(guān)透明
接下來就為大家介紹一些屬于DirectCompute 11的新技術(shù),當然它們也屬于DX11的范疇。
煙霧、火焰、流水、玻璃、樹葉、柵欄、頭發(fā)……游戲中所出現(xiàn)的半透明物體數(shù)不勝數(shù),程序員很難給這些物體設(shè)計一個固定的模型,它們不規(guī)則、隨機的特性決定了單純依靠傳統(tǒng)的像素著色或者紋理貼圖都是行不通的,因此這類物體有了一個新的稱呼——Order Independent Transparency (OIT,順序無關(guān)透明化)。
OIT非常適合處理玻璃窗這樣的半透明物體
此前,程序員必須在每幀渲染之前對透明模型進行深度排序或者執(zhí)行諸如深度剝離的Multi-Pass(多次)算法,以達成模型間正確的透明度。不管哪種辦法,都不能像非透明模型那樣實現(xiàn)正確的局部的Post-Processing(后處理)效果,而且會消耗很多資源。
DX11則首次在沒有額外專用電路的情況下,透過一個每像素空間數(shù)據(jù)結(jié)構(gòu)對多個透明表面的排序?qū)崿F(xiàn)對順序無關(guān)透明化的支持,解決方法就是讓GPU參與運算,通過使用DirectCompute 11新增的原子操作,無需直接軟件管理就能往分級緩存的不同層級裝載數(shù)據(jù),依照每個像素透明層數(shù)來分配獨占的內(nèi)存。如此一來程序設(shè)計的復(fù)雜度顯著降低,并且數(shù)據(jù)結(jié)構(gòu)可以采用難以預(yù)測的非結(jié)構(gòu)化的內(nèi)存存取,DirectCompute 11新增的附加緩沖也會派上用場。
由于DX10不支持原子操作,因此無法支持順序無關(guān)透明化這項新特效,只能依靠傳統(tǒng)的方式來實現(xiàn)差強人意的效果。而DX11不但畫面更好,而且實現(xiàn)效率非常高,大量使用附加緩沖從而節(jié)約了顯存帶寬消耗。
在《戰(zhàn)地:叛逆連隊2》的DX11版本中就運用OIT技術(shù),如在通過建筑和載具的窗戶觀察窗外的景物,窗外景物同玻璃材質(zhì)的混合、畸變就用到這樣的OIT技術(shù),不過開發(fā)商DICE考慮到多人游戲公平性的問題,在多人游戲中DX10和DX11兩者的效果會使一致的,只是DX11會提升速度。
關(guān)注我們
