虽然实现现代GPU的方法在理论上是无限的,但真正有效的实际上是理解问题并着手将其付诸实践。制造现代高性能半导体设备所面临的问题以及试图加速当前可编程光栅化技术的问题揭示了GPU硬件行业发展的未来趋势。例如,SIMD处理和固定功能纹理单元在现代GPU中非常重要,以至于设计没有它们的GPU几乎肯定意味着在研究之外没有商业可行性或实用性。即使是过去20年中任何GPU最疯狂的愿景也没有放弃这些核心原则(安息吧,Larrabee(英特尔的GPU芯片代号))。在过去的15年里,实时光线追踪加速默认被视为GPU设计中最恼人的问题。关于如何在GPU上实现光线追踪的主流规范是微软的DXR,它需要一个无法真正集成到GPU中的执行模型。操作模式,这无疑给需要支持它的任何GPU设计人员带来了一些严重的潜在问题。如果实时光线追踪是过去十年他们没有考虑过的东西,而Imagination一直在关注它,这个问题会更加明显。光线追踪的主要挑战如果您遵循DXR规范并考虑需要在GPU中实现什么以提供计算加速性能,您可能会快速找出以下无论设计方法如何都需要解决的问题:首先,您需要一种方法来生成和操作一组包含几何的数据结构,以便可以更有效地追踪光线对几何的追踪。其次,在追踪光线时,GPU需要测试光线是否与其相交,提供一些用户可定义的编程接口。第三,被追踪的光线可以发出新的光线!DXR规范定义的实现还有其他问题需要考虑,但这三个因素在整体看来是最重要的。PowerVR光线追踪混合渲染效果的生成和使用加速数据结构来高效表示需要进行相交测试的几何体意味着GPU可能要完成一个全新的执行阶段,然后我们需要使用一个新的接口函数来处理这些新的数据结构,测试是否相交,然后根据相交测试的结果,在程序员的控制下实现一些功能。GPU被设计成并行的,那么同时处理一束光线是什么意思呢?这样做是否会发现与传统的几何和像素并行处理所带来的挑战截然不同的新挑战?上一个问题的答案可以肯定的是,这些差异对于光线追踪如何映射到现有GPU执行模型具有深远的影响。这些GPU的计算资源和内存资源不平衡,导致内存访问成为宝贵的资源,而浪费这些资源是导致效率低下和性能下降的首要原因之一。哦不——我们做了什么?GPU旨在利用对连接到它们的DRAM的任何形式的访问,利用内存访问的空间或时间局部性作为这样做的手段。值得庆幸的是,最常见和现代的光栅化渲染有一个很好的特性,即在着色期间(特别是像素着色通常是任何给定帧的主要工作量)三角形和像素顶点有可能链接到它们的邻居共享相关数据。因此,您需要访问一组像素的任何缓存数据,下一个相邻组可能需要使用您已经从DRAM获取并缓存的部分或全部内存数据。对于当今大多数光栅化渲染工作负载来说都是如此,因此我们都可以松一口气并围绕此属性设计GPU架构。当我们使用光线追踪时,这些都丢失了。光线追踪使所有空间局部性消失。下面我们来分析一下原因。考虑表面问题的最简单方法是环顾四周,并在您坐下来阅读本文时注意光线在您的环境中的表现。由于光线追踪模拟光线从所有光源传播时的属性,因此它必须处理光线撞击场景中的任何表面时发生的情况。或许我们只关心光线打到哪些物体上,或许物体表面将光线散射到一个统一的方向,但也可以是完全随机的。也许表面吸收了所有的光,所以没有二次光传播。也许表面有一种材料特性,可以部分吸收几乎所有照射到它的光,然后随机散射它没有捕捉到的少量光。只有第一种情况可以映射到利用内存访问局部性的GPU操作模式,即使这样,也只有当所有并行处理的光线都命中相同类型的三角形时。正是这种明显发散的可能性导致了这些问题,如果并行处理的任何光线可能对彼此产生不同的影响,包括撞击不同的加速数据结构或发射新的光线,那么GPU高效工作的基本前提就被打破了,这通常比传统几何或像素操作中遇到的发散更具破坏性。CoherenceGatheringPowerVR实现的光线追踪硬件加速所做的是硬件光线追踪和排序,这与当今业界任何其他硬件光线追踪加速相比是独一无二的,它对软件端完全透明,确保发射光线追踪的底层相似性在硬件上并行。我们称之为一致性聚类。硬件维护一个数据结构,用于分层存储软件发出的光线,这些光线正在由硬件处理,并且可以根据光线在加速结构中前进的方向对其进行选择和分组。这意味着在内存中访问的加速数据结构中的数据更有可能在处理时被共享,额外的优势是能够最大限度地增加随后并行处理的射线几何交叉计算的数量。通过分析硬件调度的光线,我们可以确保它们以GPU友好的方式进行分组,以便更高效地进行后续处理。这些是该系统成功的关键,有助于避免打破GPU行业高效光栅化渲染的局面。以及精心设计的操作模式,避免了光线追踪硬件需要特殊类型的内存系统,从而更容易与GPU的其他部分集成。相干聚合机制本身就相当复杂,因为它需要对所有提交给硬件处理的光线进行快速跟踪、排序和调度,这样才不会反压前一阶段用来发射光线的调度系统,也不会它会导致硬件的后续阶段空闲,并将已排序的射线和加速数据结构作为输入。如果没有硬件系统来帮助GPU处理光线排序,那么就需要应用程序或游戏开发者以某种方式在主机上处理光线的相干性,或者在GPU上添加一个中间计算链接来处理光线排序————前提是该方法有硬件支持。以上假设的方法都不能提高实时硬件平台上的效率和性能。然而,Imagination是市场上唯一拥有这种硬件光线追踪系统的GPUIP供应商。作者:ImaginationTechnologiesPowerVR产品管理高级总监RysSommefeldt
