開創(chuàng)DX11宏圖霸業(yè)!鐳HD5870權(quán)威評測
雖然DirectCompute的主要任務(wù)是用來處理非圖形運算,但很多時候它還是需要做一些圖形相關(guān)的擦邊球任務(wù)、或者是輔助圖形渲染,比如說視頻數(shù)據(jù)處理、物理運算、人工智能等,這些操作最終還是需要通過顯卡輸出至屏幕,因此計算著色器會經(jīng)常與像素著色器打交道,當像素著色器使用到計算著色器的新特性之后,就會衍生出一些意想不到的新特效。
接下來就為大家介紹一些屬于DirectCompute 11的新技術(shù),當然它們也屬于DX11的范疇。
第二章/第三節(jié) DirectCompute 11新特效:順序無關(guān)透明化
煙霧、火焰、流水、玻璃、樹葉、柵欄、頭發(fā)……游戲中所出現(xiàn)的半透明物體數(shù)不勝數(shù),程序員很難給這些物體設(shè)計一個固定的模型,它們不規(guī)則、隨機的特性決定了單純依靠傳統(tǒng)的像素著色或者紋理貼圖都是行不通的,因此這類物體有了一個新的稱呼——Order Independent Transparency (OIT,順序無關(guān)透明化)。
此前,程序員必須在每幀渲染之前對透明模型進行深度排序或者執(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è)計的復雜度顯著降低,并且數(shù)據(jù)結(jié)構(gòu)可以采用難以預測的非結(jié)構(gòu)化的內(nèi)存存取,DirectCompute 11新增的附加緩沖也會派上用場。
由于DX10不支持原子操作,因此無法支持順序無關(guān)透明化這項新特效,只能依靠傳統(tǒng)的方式來實現(xiàn)差強人意的效果。而DX11不但畫面更好,而且實現(xiàn)效率非常高,大量使用附加緩沖從而節(jié)約了顯存帶寬消耗。
上面的視頻就是由HD5870實時演算出來的,機器人本身就是半透明的骨架,為其附加一層厚厚的外殼后,即便進行劇烈運動,性能也沒有多少損失。DirectCompute 11不但讓半透明物體的程序設(shè)計變得輕松,而且實時渲染效能也大幅提升,可以預見未來的DX11游戲?qū)罅渴褂冒胪该餍Ч?/P>
關(guān)注我們
