摘 要:傳統(tǒng)的圖形繪制集群采用前向著色,存在光照著色功能有限、計算負載難以預測等缺陷。為此,提出基于延期著色的sort-first繪制集群架構,該系統(tǒng)可以實時繪制具有復雜光照效果的多邊形場景,并可利用延期著色的負載可預測特性,實現繪制節(jié)點間的負載平衡。同時,提出了基于Equalizer改造現有圖形繪制引擎,構造基于延期著色的sort-first繪制集群的方法。實驗表明,該系統(tǒng)可以在靜態(tài)負載平衡策略下實現高性能的實時圖形繪制,具備良好的可擴展性。
關鍵詞:并行繪制; 繪制集群; 前向著色; 延期著色
中圖分類號:TP391.41文獻標志碼:A
文章編號:1001-3695(2009)09-3556-04
doi:10.3969/j.issn.1001-3695.2009.09.103
Deferred shading based sort-first rendering clusters
CHANG Huia,b, LEI Xiao-yonga,b, DAI Shu-linga,b
(a. State Key Laboratory of Virtual Reality Technology Systems; b. School of Automation Science Electronical Engineering, Beihang University, Beijing 100191)
Abstract:Traditional forward shading based sort-first rendering clusters have the difficulty of load prediction and limited light shading performance. This paper proposed deferred shading based sort-first rendering clusters.The system could render polygon model scenes with complex light shading. On the basis of predictable load of deferred shading, the system could achieve load-balancing among the rendering nodes. The paper also introduced the method to setup such rendering clusters by porting the existing 3D rendering engines with Equalizer. Experiments show that the proposed system can achieve high performance rendering under static load-balancing strategy with great scalability.
Key words:parallel rendering; rendering clusters; forward shading; deferred shading
0 引言
盡管圖形處理器(graphics process unit, GPU)的性能在最近十幾年間迅速提升,但面對虛擬現實、模擬訓練、科學可視化等應用對畫面逼真度和復雜性不斷膨脹的需求,實時繪制技術始終是一個具有挑戰(zhàn)性的問題。如何充分利用現有的圖形繪制設備,構造可擴展的高性能圖形繪制系統(tǒng)就成為計算機圖形領域內一個重要的研究方向。相比昂貴且難以維護與升級的專業(yè)圖形工作站,基于PC與GPU的繪制集群具備性價比高、擴展性好、易于升級等優(yōu)點,逐漸成為實現高性能圖形繪制系統(tǒng)的重要方法。
基于GPU的圖形繪制集群可以分為三種基本類型[1]:sort-first、sort-middle、sort-last,分別代表幾何處理前、幾何處理完成后以及光柵化處理完成后將圖形數據分發(fā)給后續(xù)圖形繪制節(jié)點。Sort-first集群對網絡帶寬要求較低、可擴展性好,但是難以實現繪制節(jié)點間的負載平衡[2,3]。Sort-last繪制集群可以實現較好的負載平衡,但是對網絡帶寬的要求隨著繪制節(jié)點的增加而增長,通常需要采用高速網絡或者專用硬件[4,5]實現繪制畫面的合成。由于目前的PC架構中無法從GPU實時獲取經過幾何處理的圖元數據[6],難以實現sort-middle結構的并行繪制系統(tǒng),目前基于GPU實現的繪制集群普遍采用sort-first、sort-last結構,或者兩者的混合結構[7]。
雖然sort-first的繪制集群具有可擴展性好、成本低、易于實現的優(yōu)點,但是由于目前的GPU普遍采用前向著色繪制管線,受到硬件結構與效率的局限,難以實現復雜的光照著色效果;同時,其構造的繪制集群無法獲得良好的負載平衡。針對上述問題,本文提出基于延期著色的sort-first繪制集群架構,通過采用延期著色作為主要繪制方式,可以獲得復雜、逼真的光照著色效果,同時在繪制集群的節(jié)點間實現穩(wěn)定、高效的負載平衡。該繪制集群可以廣泛應用于各種可視化、虛擬現實領域,以滿足高性能圖形繪制需求。
本文通過分析前向著色存在的問題,提出基于延期著色的sort-first繪制集群架構,并對該架構下繪制負載的可預測性與系統(tǒng)的可擴展性進行說明;介紹延期著色繪制集群中圖形繪制引擎與應用軟件架構的實現方法,通過實驗驗證所提出繪制集群的性能與應用特性。
1 系統(tǒng)架構
根據圖形繪制采用的不同方法,圖形繪制集群可分為前向著色繪制集群以及本文提出的延期著色繪制集群。本章首先分析前向著色繪制集群的特點,然后針對其存在的負載預測困難及片段著色能力有限等不足,提出采用延期著色作為主要繪制方法,構造sort-first結構的繪制集群,并對該集群架構的負載平衡及網絡特性進行分析。
1.1 前向著色繪制集群
前向著色的繪制流程包括幾何處理、光柵化、片段著色與可見性處理四個階段,如圖1所示。其中,nt表示進入繪制流水線的三角形數量;Ot表示三角形在屏幕空間下投影的平均面積;np表示屏幕空間內的可見性像素數量。幾何處理階段對三角形進行空間變換與投影,其計算量由進入繪制管線的三角形數量nt決定。三角形經過光柵化所獲得的片段數量與其投影后覆蓋的屏幕空間面積相關,因此光柵化與片段著色階段的計算復雜性為O(ntOt),即由三角形數量nt與三角形覆蓋屏幕的平均面積Ot決定。
在采用固定管線的GPU中,光柵化片段只能進行有限的著色操作,因此傳統(tǒng)的sort-first繪制集群將幾何處理作為主要消耗計算時間的階段,根據三角形數量nt預測場景的計算負載,然后在屏幕空間內劃分繪制任務并分發(fā)給各個圖形繪制節(jié)點,從而在節(jié)點間獲得較好的負載平衡。
在采用可編程GPU構造的圖形繪制集群中,上述方法難以實現良好的負載平衡效果。因為隨著GPU可編程能力的增強,越來越多復雜的著色算法,如環(huán)境映射、反射、陰影映射,可以通過片段著色程序實現。這導致對光柵化片段的著色處理成為圖形繪制過程中最消耗計算能力的階段,而單純依靠幾何處理負載已不能正確反映全部繪制流程的計算復雜性。另一方面,可視化應用中的多邊形場景通常由非均勻三角形構成,并需要根據不斷運動的視點位置對場景進行成像,這意味著相同數量的三角形會產生數量不同的光柵化片段,難以對三角形覆蓋屏幕的平均面積Ot進行預測。因此,在前向著色的繪制集群中難以預測片段著色階段的計算負載,從而無法對屏幕空間進行劃分以獲得節(jié)點間的負載平衡。
此外,隨著場景復雜程度的增加,場景的深度復雜性同時增加,如圖2所示。在前向著色繪制管線中,較高的深度復雜性會使大量的光柵化片段在完成耗時的著色處理后,由于無法經過深度檢測處理而被丟棄,降低前向著色繪制集群的性能。
1.2 系統(tǒng)架構
針對前向著色繪制集群存在的上述局限,本文提出以延期著色為主要繪制方法的sort-first集群繪制架構,該系統(tǒng)由客戶端、繪制服務器、圖像合成計算機構成,如圖3所示。客戶端根據用戶的應用請求啟動多個繪制服務器上的繪制任務,并將用戶的交互輸入實時提供給各個繪制服務器;繪制服務器完成虛擬場景繪制后提取繪制圖像并發(fā)送給圖像合成節(jié)點;后者對來自多個繪制服務器的繪制圖像進行合成并輸出最終畫面。
在上述繪制集群中,虛擬場景的圖形數據分別存放在各個繪制服務器上,避免繪制過程中的圖形數據傳輸,從而減小系統(tǒng)的網絡帶寬需求。繪制服務器根據屏幕空間的劃分繪制對應場景,經過完整的延期著色繪制流程,產生局部屏幕空間的成像畫面。圖像合成節(jié)點基于各塊局部畫面的顏色緩存數據拼接成完整的屏幕圖像。
相比于只能實現有限光照著色效果的前向著色,最早由Deering等人[8]提出的延期著色,通過將幾何與可見性處理同可見像素的光照著色分離,能夠實現基于復雜光照模型的多光源著色效果。與前向著色技術相比,由兩個獨立繪制階段構成的延期著色具有諸多優(yōu)勢:
a)在可見性檢測之后進行像素著色,不會由于對被遮擋片段的著色處理造成GPU處理能力的浪費。
b)在幾何處理階段無須為不同的光源進行區(qū)分處理,因此可以減少繪制狀態(tài)的轉換次數以及繪制指令的調用次數。
c)增加新的光照計算模型時無須對幾何處理過程進行任何修改。
d)光照著色算法不受GPU對著色指令的長度限制,同時光源數量不受GPU的硬件局限,因此可以實現更多光源與更復雜的光照模型下的著色效果。
基于延期著色技術具有的上述優(yōu)點,已經有若干游戲引擎使用延期著色作為主要繪制方式[9,10]。但是,由于目前的GPU普遍采用前向著色繪制管線,需要使用兩次繪制的方法對現有繪制管線進行改造,如圖4所示。第一次繪制稱做可見性處理階段,場景內的三角形經過幾何變換、剪裁、投影、光柵化以及深度檢測處理后,轉換為每個像素對應的三角形幾何信息,并保存在幾何緩存(G-buffers)中[11]。第二次繪制,即光照著色處理階段,根據幾何緩存的分辨率在屏幕空間內繪制四邊形,然后按照幾何緩存中存儲的可見像素幾何信息執(zhí)行光照著色及后期圖像處理并填充顏色緩存。
1.3 靜態(tài)負載平衡
為了實現集群系統(tǒng)整體效能的提升,必須根據各個節(jié)點的處理能力對負載進行劃分。基于sort-first結構的集群繪制系統(tǒng)通常采用根據視點與場景的運動,預測屏幕空間內的負載分布,并在屏幕空間進行負載劃分的動態(tài)負載平衡策略,如圖5所示。該方法需要耗費一定的處理時間,且時間會隨場景的復雜程度增加而延長。在本文提出的延期著色繪制集群框架下,由于可見性處理與光照著色階段相對獨立,可以在繪制過程中采用靜態(tài)的屏幕空間劃分實現良好的負載平衡效果。
與傳統(tǒng)的前向著色過程不同的是,延期著色方式下,光柵化片段無須執(zhí)行復雜的片段著色計算。因此圖4中的〈〈raster operation〉〉占用時間很短并可以忽略。對于三角形數量巨大的復雜場景,第一次繪制的計算復雜性為O(nt),即可以根據進入繪制管線的三角形數量nt預測該階段的繪制負載。
另一方面,第二次繪制針對每個像素進行著色計算,其計算復雜性為O(np),即光照著色階段的計算負載僅由光照著色的算法復雜性〈〈light shading〉〉、后期處理的算法復雜性〈〈post process shading〉〉,以及可見像素數量np決定,不受場景復雜程度或場景的深度復雜性影響。因此,各個繪制服務器的負載為
Lr=ntlgeo+nplsh(1)
事實上,在實際的圖形應用中,對畫面逼真度的追求使得像素著色負載lsh遠遠高于三角形平均處理負載lgeo。因此各節(jié)點完整繪制過程的計算負載可以近似地由著色負載代替,根據像素數量np,即圖像分辨率,對屏幕空間進行劃分,式(1)可以簡化為
Lr=nplsh(2)
圖形應用的畫面分辨率不會隨繪制過程改變,因此上述屏幕空間的劃分可以在繪制開始前完成,從而實現靜態(tài)的負載平衡處理。
1.4 基于顏色緩存的圖像合成
采用延期著色的sort-first繪制集群,根據節(jié)點間傳輸數據的不同,分為幾何緩存與顏色緩存兩種圖像合成方式,它們均需要根據屏幕空間的劃分將繪制負載分配給多個繪制服務器。與前向著色的sort-first繪制集群類似,基于顏色緩存的圖像合成中,各個繪制服務器執(zhí)行完整的繪制任務,并將其獲得的局部屏幕圖像提供給圖像合成節(jié)點。基于幾何緩存的圖像合成方式中,繪制服務器只負責執(zhí)行幾何與可見性處理,然后將獲得的幾何緩存數據提供給圖像合成節(jié)點,因此,后者在圖像合成完成后還需要進行全屏幕的像素著色處理。
為了實現復雜的光照著色模型,延期著色中的幾何緩存通常需要保存多項數據,所以基于幾何緩存的圖像合成需要較高的網絡帶寬。例如在采用延期著色實現Phong光照模型的應用中,對于每個像素,幾何緩存需要保存的數據包括像素對應的可見點深度、可見多邊形的表面法向量、可見多邊形表面材質的漫反射系數和鏡面反射系數。圖6中,漫反射系數與法向量均為3維向量。為了保證光照著色階段的計算精度,幾何緩存數據以16 bit浮點數格式保存,每個像素的幾何信息需要占用16 Byte,大大增加了網絡傳輸的負擔。
相反地,基于顏色緩存的圖像合成只需為每個像素傳輸三個字節(jié)的顏色數據。因此,本文提出的sort-first繪制集群中,各個繪制服務器執(zhí)行完整的延期著色繪制流程,并基于顏色緩存數據進行圖像合成,從而降低系統(tǒng)對網絡帶寬的要求。
2 系統(tǒng)實現
本章介紹基于延期著色的sort-first繪制集群的實現方法,即使用現代三維圖形引擎和GPU可編程特性構造延期著色繪制系統(tǒng),并利用并行圖形應用開發(fā)框架Equalizer[12]實現基于計算機集群的延期著色繪制系統(tǒng)。
2.1 基于OGRE的延期著色繪制引擎
開源的三維圖形引擎OGRE[13]可以在多種平臺下通過DirectX或OpenGL圖形接口實現實時的三維圖形繪制。作為一種現代的圖形繪制引擎,OGRE支持包括多繪制對象和可編程著色等技術,其內部的材質與合成器腳本可用于場景材質及多遍繪制過程的管理。
在基于OGRE實現的延期著色繪制引擎中,第一次繪制只對場景多邊形進行幾何處理與光柵化,并在片段著色時利用片段著色程序將幾何緩存數據保存到預先創(chuàng)建好的多個繪制對象中。在第二次繪制中,繪制描述各個光源對象的多邊形模型,在其片段著色階段獲取覆蓋像素的幾何緩存數據,并執(zhí)行各自的光照著色算法。
2.2 Equalizer
Equalizer是一個用于可擴展圖形應用的開源編程接口和資源管理系統(tǒng),可以實現對普通三維繪制引擎的并行化改造,如圖7所示。通過不同的服務器配置方案,一個使用Equalizer擴展的圖形繪制應用無須修改即可應用到各種結構的可視化系統(tǒng),如單GPU的圖形工作站、大型的圖形繪制集群或者具有共享存儲器的并行繪制系統(tǒng)。此外,Equalizer基于一套并行、可擴展的編程接口,可以完成繪制集群所需的分布式數據共享、幀緩存切換同步、軟件圖像
合成等功能。
3 實驗評估
本文的圖形繪制集群由三臺繪制計算機和一臺圖像合成計算機構成,并通過千兆以太網進行通信。各臺計算機使用HP xw8400工作站,采用Core 2四核CPU,2 GB DDRⅡ內存,其中繪制計算機配備GeForce 8800GT顯卡,而圖像合成計算機配備GeForce 8600GT顯卡。
為了測試延期著色技術在sort-first繪制集群中的性能,利用延期著色易于實現多光源光照效果的優(yōu)勢,構造了以光照著色為主要計算負載的多邊形場景。場景中的多邊形數量為100萬個,并可以通過調整光源的數量改變繪制過程中的像素著色負載。事實上,在實際應用中,多邊形密度較高的虛擬場景可以通過視錐剪裁、遮擋剪裁和多細節(jié)程度繪制[14]等技術減少真正進入繪制管線的多邊形數量,轉變?yōu)橄袼刂珵橹饕撦d的繪制過程,但是這部分內容已經超出了本文討論的范圍。
在延期著色與前向著色的性能對比中,成像視點隨運行時間變化而圍繞場景中心運動。從圖8(場景由100萬三角形構成,并通過50個靜止的點光源照射)中可以看到,采用前向著色繪制時,場景繪制周期隨著視點的運動不斷變化;而采用延期著色繪制時,場景繪制周期比較穩(wěn)定。特別地,在不進行光照著色處理只進行可見性處理時,場景的繪制周期更加穩(wěn)定,且僅占全部繪制周期的很小比例。因此延期著色技術在提高場景繪制速度的同時,還具有很好的負載可預測性。
在對集群系統(tǒng)的繪制性能進行測試時,通過改變場景中用于著色的光源數量來調節(jié)像素著色階段的負載,并在不同節(jié)點數量下對繪制集群的繪制速度進行對比,其中在三個繪制服務器節(jié)點間采用將屏幕進行等分的方式實現靜態(tài)的負載平衡。從圖9可以看到,當光源數量超過200個,光照著色成為主要負載來源,采用多臺繪制計算機構造的延期著色繪制集群可以有效地提高圖形繪制速度,同時增加繪制服務器的數量也能夠提高系統(tǒng)的繪制速度,而且不會帶來額外的網絡負載需求。當光源數量低于200時,由于單一節(jié)點的繪制速度較高,相對地,多節(jié)點進行并行繪制時的同步與圖像合成產生的延遲較高,從而導致繪制速度低于單一節(jié)點的現象。
為了驗證靜態(tài)負載平衡策略在延期著色繪制集群中的作用,參考Mueller[15]的方法,用多個繪制服務器中的最大負載與平均負載的比值衡量系統(tǒng)的負載平衡效果。Mueller與Frederico[2]均認為該值低于1.5時,系統(tǒng)的負載平衡情況是可接受的。測試結果如圖10所示。從圖10可以看出,基于靜態(tài)負載平衡策略,采用延期著色的繪制集群可以使該比值的均值低于1.1,遠低于采用前向著色時的平均比值,同時也優(yōu)于Fre-derico利用動態(tài)負載
平衡算法實現的平均比值1.2。
4 結束語
為了解決前向著色的繪制集群存在的各種問題,本文提出了基于延期著色的sort-first繪制集群架構,并采用并行繪制框架Equalizer與三維圖形繪制引擎OGRE構建并行繪制應用,對所提出的繪制集群進行實驗驗證。結果表明所提出的繪制集群架構可以在靜態(tài)負載平衡策略下實現復雜場景的實時逼真繪制。除了具有較高的圖形繪制性能,此系統(tǒng)還具有高性價比、擴展性好等特點,可以廣泛應用于虛擬現實、仿真、模擬訓練等需要高性能實時圖形繪制的領域。
參考文獻:
[1]MOLNAR S, ELLSWORTH D, FUCHS H. A sorting classification of parallel rendering[J]. IEEE Computer Graphics and Applications, 1994,14(4): 23-32.
[2]ABRAHAM W C, CERQUEIRA R. A load-balancing strategy for sort-first distributed rendering[C]//Proc of the 17th Brazilian Symposium on Computer Graphics and Image Processing. Brazilian:IEEE Press,2004: 292-299.
[3]SAMANTA J Z, FUNKHOUSER T, LI Kai, et al. Load balancing for multi-projector rendering systems[C]//Proc of ACM SIGGRAPH Workshop on Graphics Hardware. New York:ACM Press,1999:107-116.
[4]PUGMIRE D, DAVENPORT C, DUBOIS A. NPU-based image compositing in a distributed visualization system[J]. IEEE Visualization and Computer Graphics, 2007,13(4): 798-809.
[5]STOLL M E, PATTERSON D, WEBB A, et al. Lightning-2: a high-performance display subsystem for PC clusters[C]// Proc of International Conference on Computer Graphics and Interactive Techniques. New York:ACM Press, 2001:141 -148.
[6]HUMPHREYS M E, BUCK I, STOLL G. WireGL: a scalable graphics system for clusters[C]// Proc of International Conference on Computer Graphics and Interactive Techniques. New York:ACM Press, 2001:129-140.
[7]PENG Hao-yu, QIN Ai-hong, XIONG Hua, et al. A nested parallel pipeline for parallel graphics rendering based on PC-cluster[J]. Journal of Computer-Aided Designed Computer Graphics, 2006,18(10):1581-1582.
[8]DEERING S W, SCHEDIWY B, DUFFY C, et al. The triangle processor and normal vector shader: a VLSI system for high performance graphics[C]// Proc of the 15th Annual Conference on Computer Graphics and Interactive Techniques. New York:ACM Press, 1988:21-30.
[9]SHISHKOVTSOV O. Deferred shading in S.T.A.L.K.E.R. [M]// PHARR M. GPU Gems 2:programming techniques for high-performance graphics and general-purpose computation.[S.l.]: Addison Wesley Professional, 2007:101-116.
[10]KOONCE R. Deferred shading in Tabula Rasa[M]// NGUYEN H. GPU Gems 3.[S.l.]: Addison Wesley Professional, 2007:235-258.
[11]SAITO T. Comprehensible rendering of 3-D shapes[C]// Proc of the 17th Annual Conference on Computer Graphics and Interactive Techniques. New York:ACM Press, 1990:197-206.
[12]GMBH E S. Equalizer programming guide[R/OL].(2008-01-28).http://www.equalizergraphics.com/documents/Developer/Guide.pdf.
[13]JUNKER G. Pro OGRE 3D programming[M].New York:Springer-Verlag,2006.
[14]DIETRICH E G, YOON J. Massive-model rendering techniques: a tutorial[J]. IEEE Computer Graphics and Applications, 2007,27(6):20-34.
[15]MUELLER C. The sort-first rendering architecture for high-performance graphics[C]// Proc of Symposium on Interactive 3D Graphics.New York:ACM Press,1995:75-82.