首先叠个甲,本人对计算机图形学方面可以说是才疏学浅,如果有任何问题,希望大佬们可以海涵。
那么今晚聊什么?聊硬件光追(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
