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



