渲染 光线追踪_PowerVR光线追踪混合渲染效果

作者:RYS索姆费尔德

虽然理论上现代GPU的实现方式有无限多种,但真正有效的方式是理解问题,并开始将方案变为现实。制造现代高性能半导体器件和试图加速当前可编程光栅化技术的问题揭示了GPU硬件行业的未来趋势。

例如,SIMD处理和固定功能纹理单元在现代GPU中是必不可少的,因此没有它们而设计的GPU方案几乎肯定意味着它在研究之外不具有商业可行性和实用性。即使在过去的20年里,任何GPU最疯狂的愿景都没有抛弃这些核心原则(安息吧,Larrabee(英特尔公司(GPU的芯片代码))。

在过去的15年里,实时光线追踪加速一直被默认为GPU设计中最令人烦恼的问题。关于光线追踪应该如何在GPU上实现的主流规范是微软推出的DXR,但是它所要求的执行模型并不能真正融入到GPU的工作模式中,这无疑给任何需要支持的GPU设计师带来了一些严重的潜在问题。如果说实时光线追迹是他们过去十年都没有考虑过的事情,那么这个问题会更加明显,想象力也一直在关注这个问题。

光线追踪面临的主要挑战

如果你遵循DXR规范,考虑需要在GPU中实现什么来提供计算加速性能,那么无论你采用什么设计方案,你大概都会很快梳理出以下需要解决的问题:首先,你需要一个方法来生成和处理一组包含几何的数据结构,这样你就可以更有效地根据几何来跟踪光线。其次,在追踪光线时,GPU要测试光线是否与其相交,并提供一些用户可定义的编程接口。第三,被跟踪的光可以发出新的光!在DXR规范定义的实现方案中还需要考虑其他问题,但从全局来看这三个因素是最重要的。

PowerVR光线追踪混合渲染效果

生成并使用加速的数据结构来有效地表示需要交集测试的几何,这意味着GPU可能要完成一个全新的执行阶段,然后我们需要使用全新的接口函数来处理这些新的数据结构,测试它们是否相交,然后在程序员的控制下根据交集测试的结果实现一些功能。GPU是并行设计的,那么同时处理一束光意味着什么?有没有发现新的挑战,与传统的几何和像素并行处理带来的挑战有很大不同?

最后一个问题的答案是非常肯定的。事实上,这些差异对如何将光线跟踪映射到现有的GPU执行模型有着深远的影响。这些GPU中存在计算资源和内存资源的不平衡,使得内存访问成为一种宝贵的资源,而浪费这些资源是效率和性能低下的主要原因之一。

哦,不,——,我们做了什么?

GPU的设计是为了充分利用以任何形式与其相连的DRAM的访问,利用内存访问的空间或时间局部性作为实现这一目标的方法。幸运的是,最常见也是最现代的光栅渲染有一个很好的特性,那就是三角形和像素顶点在着色期间可能会与它们的邻居共享相关数据(尤其是像素着色通常是任何给定帧的主要工作量)。因此,访问一组像素所需的任何缓存数据都可能要求下一个相邻的组使用您从DRAM中提取并缓存的部分或全部内存数据。对于今天的大多数光栅渲染工作负载来说都是如此,所以我们都可以松一口气,围绕这个属性设计GPU架构。当我们使用光线追踪时,这些都是无效的。光线追踪使所有空间局部性消失。我们来分析一下原因。

物体表面的问题

最简单的思考方式是,当你坐下来阅读这篇文章时,环顾四周,注意光线在你所处环境中的作用。因为光线跟踪模拟光线从所有光源传播时的属性,所以它必须处理光线照射到场景中任何曲面时发生的情况。也许我们只关心哪些物体受到了光的照射。也许一个物体的表面向一个均匀的方向散射光,但也可能是完全随机的。可能表面吸收了所有的光,所以不会有二次光传播。也许表面有一种材料属性,使它能够部分吸收几乎所有的照射光,然后随机散射少量它无法捕捉的光。

只有第一个场景可以映射到GPU使用内存访问局部性的工作模式,即便如此,也只能在所有并行处理光线照射同一类型的三角形时才能做到。

正是这种明显发散的可能性导致了这些问题。如果并行处理的任何光线都可能对彼此产生不同的影响,包括击中不同的加速数据结构或发出新的光线,那么GPU能够高效工作的基本前提就会被破坏,而这通常比传统几何图形或像素处理中遇到的发散现象更具破坏性。

相干聚集

PowerVR为实现光线追踪的硬件加速所做的是硬件光线追踪和排序,这与当今业界任何其他硬件光线追踪加速相比都是独一无二的,对软件完全透明,保证了硬件上并行追踪的发射光线的潜在相似性。我们称之为相干聚合。硬件维护一个数据结构,用于分层存储由软件发出并由硬件处理的光,并可以根据它们在加速结构中的方向和位置进行选择和分组。这意味着当它们被处理时,它们更有可能共享在存储器中访问的加速数据结构中的数据,并且额外的优点是稍后要并行处理的光线-几何相交计算的数量可以最大化。

通过对硬件调度的灯光进行分析,可以保证以GPU友好的方式进行分组,从而更高效地进行后续处理。这些是系统成功的关键,有助于避免打破GPU行业为高效光栅渲染精心设计的运行模式,从而避免特殊类型的存储系统需要光线跟踪硬件,从而提供更容易与GPU其他部分集成的方案。

相干聚合机制本身是相当复杂的,因为它需要快速跟踪、排序和调度所有提交给硬件处理的光线,既不会反压前一级用来发射光线的调度系统,也不会导致后一级以排序后的光线和加速后的数据结构作为输入的硬件空闲。

如果没有硬件系统帮助GPU处理光线排序,那么就需要依靠应用或者游戏开发者以某种方式来处理主机上光线的相干性,或者给GPU增加一个中间计算环节来处理光线排序3354,前提是这种方式有硬件支持。上述假设的方法都不能在实时硬件平台上提高效率和性能。然而,Imagination是市场上唯一拥有这种硬件光线跟踪系统的GPU IP提供商。

紧跟时尚潮流

我们之所以成为业界唯一提供硬件光线追踪解决方案的供应商,是因为我们长期以来一直在努力解决这个问题。相对于业内其他进展缓慢的技术,光线追踪已经成为当今图形技术中广泛使用的API之一。

我们的相干聚合特性与当前行业的光线追踪兼容(如果光线刚好发出新的光线,那么堆栈会被释放或者可能会发出新的光线等等。),并且每一阶段都会进行相干聚合处理,保证我们尽可能的达到硬件光线追踪的强大性能。

在现代硬件射线跟踪系统中,最重要的是测量射线束、峰值并行测试率或空射线发射和脱靶率。这些是描述光线跟踪硬件性能的简单方法,但它们不是很有用。毕竟,开发人员不仅仅关心峰值并行测试率或漏检率。

我们的目标是在整个加速系统中使用全面的光线跟踪,以便开发人员可以使用光线束来预算要实现哪些有用的功能。我们的一致聚合系统与我们提供的解决方案一起实现了这一目标,与行业中的其他解决方案相比,这是独一无二的。

原文链接:https://www . img tec . com/blog/coherence-gathering-in-ray-tracing-the-bene。

来源:电子创新网审计贺安