首先疊個甲,本人對計算機圖形學方面可以說是才疏學淺,如果有任何問題,希望大佬們可以海涵。
那麼今晚聊什麼?聊硬件光追(Hardware Ray Tracing),硬件光追我就不用多說了吧,相信大家都懂,我們具體說說RT的實現。我記得應該是21年那陣,IMG CXT在發佈的時候提出了一個很新穎的觀點,那就是RTLS(RT LEVELS)從0到5一共6級,如圖所示,當時只有桌面端的NVIDIA和AMD才支持比較初級的達到2和3級的光追(NVIDIA好歹有硬件BVH,算3級,AMD沒有,只算2級),而移動端沒人支持硬件光追,基本都是1級的軟件光追,而這時候,IMG推出的CXT直接支持了4級的光追,其不僅擁有硬件BVH,還能夠用其處理相干性分類。可惜理想是美好的,現實是殘酷的,沒有人用。(雖然Tensor G5用了DXT,但是也沒裝RT Core啊,只有可憐的RT 0.5……,Tensor G6更幽默,退回了CXTP,雖然我並不清楚哪來的CXTP,我只知道有DXTP),很快到了下一年,NVIDIA的Ada Lovelace升級了RT-Core,加入了Shader Execution Reordering(SER),可以動態組織、重排 shading workload。很顯然,在22年,NVIDIA首先支持了4級的RT,**AMD的RDNA3卻依舊只支持2級的RT(RDNA2/3的描述是shader-based tr**ersal and intersection accelerator。這說明遍歷主體仍偏 shader-side,硬件更像 intersection accelerator,所以是2級)到了RDNA4纔有了硬件BVH(BVH8、hardware instance transform、ray hardware stack management acceleration這類更強的 RT 專項硬件特徵),達到了3級。intel Arc/Xe-HPG相當激進,RTU帶有硬件BVH,且擁有TSU (thread sorting unit),能sort and re-emit shader threads to maximize SIMD coherence,還會把 individual rayscoalesce into coherent SIMD groups,是標準的4級光追實現,後來的Xe2/Battlemage也延續了這個設計。
看完了桌面端我們再看看移動端,同樣在22年,Adreno 740帶來了1536ALU的大規模和以及首批在移動端實現了硬件光追的GPU,其擁有硬件BVH,但並未做到處理相干性分類所以只有3級,並且這個RTU的特性一直延續至今,所以Adreno一直是3級,作爲安卓GPU的另一家,ARM Mali同樣在22年推出了Immortalis G715從而也在本年度支持了RT,並且Arm 開發者材料直接說“Ray tr**ersal is handled on a per-warp basis”,並且專門討論acceleration structure拓撲如何影響要遍歷的節點數量。這明顯超過“只有 ray-box / ray-triangle tester”的 2 級,而屬於公開可證實的硬件 BVH / tr**ersal 處理能力,所以我給RTLS 3。ARM同樣以RTLS 3延續至今。
22年各家都拿出了自己的RT技術,無論是2級也好,4級也罷,至少也拿出來了,但是我們仔細一看,哎?在芯片上相當強勢的Apple去哪了?
嗯……Apple在RT上確實有些姍姍來遲,20、21、22年Apple挺動盪的,先是Nuvia出走帶走了不少的工程師,造成崗位流動性變高,TSMC N3工藝不合時宜的延期,Apple 9 GPU因爲理念過於先進造成了研發受阻,半成品Apple 9發熱異常嚴重,只能backport到Apple 8,stepping都到B3了,可想而知Apple 9是做了多大的進步造成了延期,一直到23年,Apple 9才姍姍來遲,雖然在A17 Pro上表現差強人意,但在M3、M3 Pro、M3 Max上,還是可圈可點的,Apple 9在RT上直接就做到了4級的光追,不僅有硬件BVH遍歷,還有reordering stage,由於硬件相交器是按單條光線獨立執行遍歷,所以系統可以把來自不同 SIMD 組、但在空間/時間上接近的光線,其 intersection function calls 重新分組,從而減少甚至消除傳統實現中的執行發散。這很明顯是4級的RT,但由於沒有專用的 BVH hardware generator / hardware builder。所以達不到5,後來Apple 9.5只是完全修好了RTU,一年後的Apple 10 GPU在RTU沒有太大改動,依舊是4級的RT,但更多對Dynamic Cache、Shader Core進行大規模的升級,尤其Dynamic Cache,這個技術確實是獨屬於Apple的技術,沒有任何一家物理意義上這麼實現。
Dynamic Caching 不是單純“加大緩存”,而是把 shader core 內原本按最壞情況靜態預留的片上資源改成運行時按真實階段需求動態分配:在 Apple 9 起,SIMDgroup 不再從啓動到結束一直佔着按全程峯值預留的一大塊寄存器,而是寄存器容量會隨程序階段 allocate / deallocate,因此同一 shader core 能容納更多併發 SIMDgroups;同時,threadgroup memory、tile memory、stack、buffer 等訪問路徑也被納入更統一的片上緩存體系,原來分散、按功能切死的小片上存儲被重構成更少但更大的共享緩存,讓當前真正緊張的數據類型臨時拿到更多片上容量;硬件還會監視 shader 行爲並動態調節 occupancy,避免工作集被擠到下一級緩存或主存,目標是同時提高寄存器和片上存儲利用率、buffer 命中率、stack 容量可用性,以及複雜 shader 的吞吐和延遲表現。但事實上,第一代的DC延遲很高,拖慢了整個GPU的性能,可以說理念非常好,但目前實現出來的不夠好。所以到了Apple 10,對DC進一步進行重構:寄存器繼續從靜態容量資源轉向帶工作集屬性的近核緩存,threadgroup/tile/stack/buffer 等多類數據在更統一的 on-chip storage fabric 中動態分配、回收與複用,同時 occupancy 不再只受線程槽位和靜態寄存器數約束,而是由寄存器壓力、局部緩存命中、臨時數據駐留以及壓縮表面/異構負載元數據壓力聯合驅動;因此它帶來的真實收益不是某一項微指標的小幅優化,而是更高的 resident SIMDgroup 穩定性、更低的寄存器與 buffer 訪問延遲、更少的片上/片外來回搬運,以及在 graphics、compute、ML、RT 混合負載下更強的持續吞吐和更好的能效。至少這代延遲獲得了不小的提升,從而讓整個GPU性能實現了非常大的跨越。(好像有點跑題了)
回到RT,Apple 10 GPU 的光追改進重點也不是簡單把 tr**ersal 單元再做寬,而是在已有硬件 tr**ersal 基礎上系統性壓低 RT 管線外圍開銷:一方面通過更快的 instance transforms 降低 TLAS 到 BLAS 切換、實例矩陣變換和實例元數據處理成本,使 instancing-he**y 場景更受益;另一方面通過更快的 intersection function buffer indexing 縮短可編程交點/命中階段的函數表查找與間接派發路徑,減少 tr**ersal 之後進入 shader 側處理時的額外延遲;再加上更低的內存對齊要求,使 acceleration structure、instance 數據和輔助緩衝的打包更緊湊、padding 更少、構建與更新更靈活。歸根結底,Apple 10 的 RT 提升並非只來自“交點測試更快”,而是來自實例處理、函數索引、內存佈局與 shader core 動態緩存協同後的整條 RT 執行鏈更順、更穩、更省帶寬。
所以我們能看到,Apple喫虧就喫虧在DC上了,但DC同樣的也是一個可以獲得巨大收益的模塊,成也蕭何,敗也蕭何。那麼,RTLS 4具體有什麼優勢呢?還記得NVIDIA Ada宣傳的Path Tracing(路徑追蹤)嗎?RTLS 4在這裏就很有優勢,在 Path Tracing 裏,RTLS 4 相比 RTLS 3 的優勢,核心不在於“單條 ray 遍歷更快”,而在於它更擅長處理“很多條彼此越來越不相干的 ray 如何高效並行”:RTLS 3 主要把 BVH tr**ersal / intersection 從通用 shader 中剝離出來,降低的是單條 ray 的走樹成本;但 Path Tracing 一旦進入二次、三次乃至更多 bounce,光線會在方向、空間位置、命中材質、着色路徑和遍歷深度上迅速發散,導致同一 w**e/warp 中大量 lane 走不同 BVH 分支、執行不同 hit shader、訪問不同紋理與緩存區域,SIMT 利用率和局部性都會明顯變差。RTLS 4 比 RTLS 3 多出來的價值,是硬件級的相干性分類/重組能力:它能把行爲更接近的 rays / threads / hit work 重新聚類或排序,讓遍歷階段更整齊、着色階段更少分支發散、緩存命中率更高、空轉 lane 更少,因此在 多 bounce、強隨機採樣、複雜材質混合 的 Path Tracing 中通常收益更大。嚴謹地說,這不是“RTLS 4 一定全面碾壓 RTLS 3”,因爲實際收益還受 shader 組織方式、BVH 質量、寄存器壓力和採樣/降噪算法影響;但只要瓶頸開始從“單條 ray 的遍歷代價”轉向“海量不相干 rays 的並行效率”,RTLS 4 就會比 RTLS 3 更佔優勢。從而你能發現,NVIDIA Blackwell和Apple 10 GPU在PT上非常有優勢,這就是RTLS 4所帶來的硬件上的差距,那些2和3的GPU就沒辦法做到。
那麼最後,馬良呢?馬良在去年也支持了硬件光追,至少以目前公開的文檔來看,馬良935,orq 0309這個的GPU只支持RTLS 2的光追,第一,華爲開發者文檔已經把基於馬良 GPU 的 RT 功能寫出來了:像“光線追蹤陰影和環境光遮蔽”“光線追蹤反射”都明確說,依託馬良 GPU 的軟硬結合優化,XEngine 支持 FERT(Flexible Entry Raytracing)求交加速技術,用於減少光線和場景幾何體之間的求交計算。第二,同一套文檔還明確說這些能力依賴 Vulkan 光線追蹤擴展 VK_KHR_acceleration_structure 和 VK_KHR_ray_*****。第三,Khronos 的合格產品列表裏,Maleoon 935 已經是 Vulkan 1.3 和 OpenGL ES 3.2 的合格產品。但是,3 級的關鍵是公開可確認的硬件 BVH / tr**ersal 處理能力。而我這次查到的華爲公開資料,最明確的詞是 “求交加速”、“軟硬結合優化”、VK_KHR_acceleration_structure + VK_KHR_ray_*****。這更像是“對 ray ***** / intersection 做了硬件加速或硬件輔助”,並不能嚴謹推出它已經公開坐實了類似 Apple 的 fixed-function tr**ersal blocks、Intel 的 RTU、NVIDIA 的 BVH tr**ersal in RT Core 這種表述。換句話說,公開證據能證明它在做 RT 加速,但還不能證明它公開達到了‘完整硬件 BVH tr**ersal’這一檔。從而4和5級基於BVH的進一步特性就更沒有了。至於其他像什麼Mesh Shading……額,我們避免這個話題。(至於這個GPU爲什麼跑不了3D Mark Solar Bay Extreme這個測試光追的項目,只能跑Solar Bay這個風味光追項目,絕對不是因爲沒有硬件BVH的問題,應該是驅動或者別的(確信))
好了,夜談就談到這裏,非常感謝你們的閱讀,如果有一些疏漏還望各位海涵。
![]()
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com
