光線(xiàn)追蹤的相干性聚集:硬件光線(xiàn)追蹤的優(yōu)勢
盡管在理論上實(shí)現現代GPU的方法是無(wú)限的,但真正有效的方法是切實(shí)地了解問(wèn)題并著(zhù)手將方案變?yōu)楝F實(shí)。制造現代高性能半導體器件以及試圖加速當前可編程光柵化技術(shù)所面臨的問(wèn)題揭示了GPU硬件行業(yè)發(fā)展的未來(lái)趨勢。
本文引用地址:http://dyxdggzs.com/article/202003/411188.htm例如在現代GPU中SIMD處理和固定功能紋理單元是必不可少的,以至于不使用它們來(lái)設計的GPU方案幾乎肯定意味著(zhù)在研究之外不具有商業(yè)上的可行性和實(shí)用性。即使是過(guò)去20年來(lái),任何一個(gè)GPU最瘋狂的愿景也沒(méi)有舍棄這些核心原則(安息吧,Larrabee(英特爾公司GPU 的芯片代號))。
過(guò)去15年來(lái)實(shí)時(shí)光線(xiàn)追蹤加速一直被默認為是GPU設計中最令人煩心的問(wèn)題,關(guān)于光線(xiàn)追蹤應該如何在GPU上實(shí)現的主流規范是微軟推出的DXR,它要求的執行模型卻不能真正融入GPU的工作模式,這無(wú)疑給任何需要支持它的GPU設計者帶來(lái)一些嚴重的潛在問(wèn)題。如果實(shí)時(shí)光線(xiàn)追蹤是它們過(guò)去十年時(shí)間沒(méi)有考慮過(guò)的事情,那么這個(gè)問(wèn)題會(huì )更加明顯,而Imagination一直在關(guān)注這個(gè)問(wèn)題。
光線(xiàn)追蹤面臨的關(guān)鍵挑戰
如果你遵循DXR規范并考慮需要在GPU中實(shí)現些什么從而提供計算加速性能,那么你將很可能快速梳理出以下這幾個(gè)不管采用何種設計方案都需要解決的問(wèn)題:
首先,你需要一種方法來(lái)生成和處理一組包含幾何體的數據結構,從而能以更有效的方式根據幾何體來(lái)跟蹤光線(xiàn)。其次,當追蹤光線(xiàn)時(shí),GPU要測試光線(xiàn)是否與之相交,要提供一些用戶(hù)可定義的編程接口。第三,被跟蹤的光線(xiàn)可以發(fā)出新的光線(xiàn)!DXR規范定義的實(shí)現方案還需要考慮其他問(wèn)題,但是從全局來(lái)看這三個(gè)因素是最重要的。
生成和使用加速數據結構來(lái)有效地表示需要做相交測試的幾何體意味著(zhù)GPU可能要完成一個(gè)全新的執行階段,然后我們需要用全新的接口函數處理這些新的數據結構,測試是否相交,之后在程序員的控制下根據相交測試的結果實(shí)現一些功能。GPU是并行的設計,所以同時(shí)處理一堆光線(xiàn)意味著(zhù)什么?這樣做是否發(fā)現了新挑戰,而這些挑戰與傳統的幾何和像素并行處理所帶來(lái)的挑戰卻大不相同?
上一個(gè)問(wèn)題的答案是非??隙ǖ?,的確這些差異對如何將光線(xiàn)追蹤映射到現有的GPU執行的模型中有著(zhù)深遠的影響。這些GPU存在計算資源和內存資源的不平衡,導致內存訪(fǎng)問(wèn)成為一種寶貴的資源,而浪費這些資源是導致效率和性能低下的最主要原因之一。
PowerVR光線(xiàn)追蹤混合渲染效果
哦不——我們做了些什么?
GPU被設計成可以任何形式充分利用與之連接的DRAM的訪(fǎng)問(wèn),利用內存訪(fǎng)問(wèn)的空間或時(shí)間局部性來(lái)作為實(shí)現這一目的的方法。值得慶幸的是,最常見(jiàn)和最現代化的光柵化渲染有一個(gè)很好的特性,即在著(zhù)色期間(尤其是像素著(zhù)色通常是任何給定幀的主要工作負載)三角形和像素頂點(diǎn)有可能與它們的近鄰共享相關(guān)數據。因此,您訪(fǎng)問(wèn)一組像素所需的任何緩存數據,很可能下一個(gè)相鄰的組將需要使用您已經(jīng)從DRAM中提取并緩存的部分或全部?jì)却鏀祿?。對于當今大多數柵格化渲染工作負載而言,這都是正確的,因此我們都可以松一口氣,并圍繞該屬性設計GPU架構。
當我們使用光線(xiàn)追蹤,這些就都失效了。光線(xiàn)追蹤使所有空間局部性消失。下面讓我們來(lái)分析其中的原因。
物體表面的問(wèn)題
最簡(jiǎn)單的思考方式就是觀(guān)察四周,在你坐下來(lái)閱讀這篇文章時(shí)注意光線(xiàn)在你所處環(huán)境中的作用。由于光線(xiàn)追蹤建模了光線(xiàn)從所有光源傳播時(shí)的屬性,因此它必須處理光線(xiàn)照射在場(chǎng)景中任何表面時(shí)發(fā)生的情況。也許我們只關(guān)心光線(xiàn)照射哪些物體,也許物體的表面以均勻的方向散射光線(xiàn),但它也可能完全是隨機的。也許表面吸收了所有的光,因此不會(huì )有次級光線(xiàn)的傳播。也許表面有一種材質(zhì)屬性,使它能夠部分吸收幾乎所有照射來(lái)的光線(xiàn),然后隨機散射它不能捕獲的少量光線(xiàn)。
只有第一種場(chǎng)景可以映射到GPU的利用內存訪(fǎng)問(wèn)局部性的工作模式,即使如此也只有當所有并行處理的光線(xiàn)都照射到同一類(lèi)型的三角形時(shí)才可以。
正是這種明顯分歧的可能性導致了這些問(wèn)題,如果并行處理的任何光線(xiàn)相互之間可能會(huì )有不同的作用,包括撞擊不同的加速數據結構或發(fā)出新的光線(xiàn),那么GPU能高效工作的基本前提就會(huì )被破壞,而且這通常比在傳統的幾何圖形或像素處理中遇到的發(fā)散現象更具有破壞性。
相干性聚集
PowerVR對光線(xiàn)追蹤硬件加速的實(shí)現所做的是硬件光線(xiàn)追蹤和排序,它與當今行業(yè)內任何其他硬件光線(xiàn)追蹤加速相比都是獨一無(wú)二的,這對軟件方面來(lái)說(shuō)是完全透明的,確保硬件上并行追蹤的發(fā)射光線(xiàn)具有潛在的相似性。我們稱(chēng)之為相干性聚集。
硬件維護了一個(gè)數據結構,用于層次化的存儲軟件發(fā)出的正在被硬件處理的光線(xiàn),并能夠根據它們的方向按它們在加速結構中前進(jìn)的位置進(jìn)行選擇和分組。這意味著(zhù)當它們被處理時(shí)更可能共享存儲器中被訪(fǎng)問(wèn)的加速數據結構中的數據,且額外的優(yōu)勢是能夠最大化隨后要并行處理的光線(xiàn)-幾何體相交計算的數量。
通過(guò)分析由硬件調度的光線(xiàn),我們可以確保以GPU友好的方式對它們進(jìn)行分組,從而更高效地進(jìn)行后續處理,這些是該系統成功的關(guān)鍵,有助于避免打破GPU行業(yè)為高效的光柵化渲染而精心設計的運行模式,這就避免了光線(xiàn)追蹤硬件對特殊類(lèi)型存儲系統的需求,因此提供了與GPU的其他部分更容易集成的方案。
相干性聚集機制本身相當的復雜,因為它需要快速的追蹤,排序和調度所有被提交到硬件中處理的光線(xiàn),從而不會(huì )反壓前級用于發(fā)射光線(xiàn)的調度系統,也不會(huì )造成后級以排序好的光線(xiàn)和加速數據結構為輸入的硬件的空閑。
如果沒(méi)有硬件系統來(lái)幫助GPU處理光線(xiàn)排序,那么就需要依賴(lài)應用程序或游戲開(kāi)發(fā)人員以某種方式在主機上處理光線(xiàn)的相干性問(wèn)題,或者在GPU上加入一個(gè)中間的計算環(huán)節來(lái)處理光線(xiàn)排序——前提是這種方式被硬件所支持,以上假設的方式中沒(méi)有一個(gè)能在實(shí)時(shí)的硬件平臺上提升效率和性能,然而Imagination是市場(chǎng)上唯一擁有這種硬件光線(xiàn)追蹤系統的GPU IP供應商。
緊跟潮流
Imagination之所以成為行業(yè)內唯一針對硬件光線(xiàn)追蹤提供解決方案的供應商是因為我們已經(jīng)致力于解決這個(gè)問(wèn)題很長(cháng)時(shí)間了。與行業(yè)中其他一些正在緩慢進(jìn)展的技術(shù)相比,光線(xiàn)追蹤已經(jīng)成為當今圖形技術(shù)廣泛采用API之一。
我們的相干性聚集特性與目前行業(yè)的光線(xiàn)追蹤相互兼容(如果光線(xiàn)恰好發(fā)射出新的光線(xiàn),堆棧將會(huì )被釋放也可能發(fā)射出新的光線(xiàn)等等),在每個(gè)階段進(jìn)行相干性聚集處理并確保我們盡可能地實(shí)現硬件光線(xiàn)追蹤的強大性能。
在現代的硬件光線(xiàn)追蹤系統中最重要的是測量光線(xiàn)束、峰值并行測試率或空光線(xiàn)發(fā)射和未命中率,這些是描述光線(xiàn)追蹤硬件性能的簡(jiǎn)單方式,但是也并不是非常的有用,畢竟開(kāi)發(fā)人員并不只關(guān)心高峰值并行測試率或漏測率。
我們的目標是在整個(gè)加速系統中使用全面的光線(xiàn)追蹤,這樣開(kāi)發(fā)人員就可以用光線(xiàn)束預算要實(shí)現哪些有用的功能。我們的相干性聚集系統與我們提供的解決方案共同實(shí)現了這個(gè)目標,與行業(yè)內的其他方案相比是獨一無(wú)二的。
評論