实时全局照明(Real-Time Global Illumination)是在游戏等性能关键型应用或任何其他有实时限制的应用中实现更加动态和物理真实世界的关键。
现代 GPU 中的硬件加速光线追踪允许对几何体进行任意的交叉查询,这使得在运行时可以完全评估间接照明。不过,为了在不断提高的图像分辨率下保持高帧率,每个像素点只能追踪少量的光线。现有的解决方案,如基于探针的技术,以每帧几条射线为代价,对辐照度信号进行了近似处理,但这样的方式也存在缺少细节,以及对光照变化的反应时间慢的问题。另一方面,虽然重采样技术可以捕捉到更多的细节,但通常会有较差的性能和更多的噪点,对于当前的 PC 硬件和游戏主机来说,采用这样的技术也不切实际。
为了找到一个平衡点,实现高照明保真度,同时保持低运行时开销,AMD 近日提出了一个解决方案,该方案可以动态估计全局照明,而不需要任何内容预处理,从而能够轻松地集成到现有的实时渲染管线中。
AMD 设计了全局照明管线,通过在空间和时间上重复使用照明信息进行采样和过滤,从而充分利用每一个样本,并通过将场景照明持久化在两个不同层次的辐射度缓存中来实现,如下图所示:
- Screen cache 将主要路径顶点的入射光度缓存在直接放置在主要可见表面的探针内,由于有大量的探针,所以提供了详细的照明表现。
- World cache 缓存了次要路径顶点的出射光度,尽管没有 screen cache 那么详细,但它具有稳定和持久的优势。
这样的设置可以使用低至每像素 1/4 的采样率来计算高清晰度和时间响应的直接和间接照明。
AMD 已将这项研究的论文发表在了 GPUOpen 项目下,这项技术暂时被称为 "GI-1.0" 技术。通过上面的介绍能够看出,这种实时全局照明的方法可以提供与其他 GI 实现相当的图像质量,但 GI-1.0 的速度要更快。在论文中,AMD 表示将会开源 GI-1.0,但目前还没有公开相关的代码。
对 GI-1.0 所有技术细节感兴趣的开发者可以访问 GPUOpen.com,里面有一份包含 14 页详细介绍的的文档。