在当今游戏开发和三维图形渲染领域,光线追踪技术因其能够真实模拟光线与物体的交互,极大提升画面的真实感和视觉效果,逐渐成为行业的热点。随着硬件的不断进步,实时光线追踪也从理论研究逐步走向实际应用,成为现代游戏引擎的重要特性之一。Bevy作为开源且专为独立开发者打造的Rust游戏引擎,于0.17版本首次引入了名为Solari的实验性硬件实时光线追踪支持,为开源社区带来了极具潜力的高质量光照解决方案。Solari项目的起点可以追溯到2023年,经过数年积累和技术突破,最终实现了与wgpu等图形库的深度整合,不仅提升了光照的准确度,还兼顾了性能与实用性。传统的光照表现往往依赖静态预烘焙和屏幕空间技术,但这些方法存在诸如光照不自然、阴影失真等局限性。光线追踪打破了这些壁垒,通过模拟真实的光线路径,准确呈现间接光照、全局光照和反射效果,极大改善了场景的视觉质量。
对于独立游戏开发者而言,光线追踪不仅是提升画质的手段,更是理解光照本质的关键工具。Solari项目的设计理念即是为开发者提供一个光照的参考实现,让他们能够在动态环境下实时观察光线的正确表现,进而优化其他性能友好的光照技术。Solari的核心架构围绕两个关键技术展开:ReSTIR Direct Illumination(DI)和ReSTIR Global Illumination(GI)。ReSTIR DI负责模拟直接光照,包含从光源到表面的光线传播,结合创新的采样和重采样算法,有效降低光线追踪计算的复杂度。ReSTIR GI则模拟光线多次反射带来的间接光照,通过构建世界空间的光照缓存,实现了多重反射路径的动态追踪,确保了间接光的细节与真实感。Solari并未完全抛弃传统的栅格化渲染技术,而是巧妙地与之结合。
在渲染管线的初始阶段,依然通过GBuffer完成场景的基础传递信息采集,如基础颜色、法线及深度。这样既保持了高质量的几何细节和纹理表现,也为后续光线追踪提供了基础数据。选择在主视图中使用栅格化而非光线追踪进行可见性计算,主要是考虑到高分辨率网格的细节需求与加速结构的计算效率之间的平衡。同时,这种设计更好地兼容Bevy特有的虚拟几何等功能,保证整体管线的灵活性与兼容性。Solari的光照采样采用了预采样的"光照贴图"(Light Tiles)方案,将复杂的光源采样过程拆解为多个阶段。这不仅显著提升了缓存命中率,还避免了GPU工作组内部的分支发散,提高了采样效率并降低了带宽压力。
光照采样中,LightSample和ResolvedLightSample两个数据结构分别表示原始的光源点及其解析后的位置、法线和辐射度信息。通过这种分步处理,算法能够快速定位到最有贡献的光源样本,大幅节省了光线射线追踪的时间消耗。在实现光线追踪功能时,Solari充分利用了wgpu中已上游合并的硬件光线追踪能力,通过内联射线查询Inline Ray Queries的方式执行射线与场景相交计算。该策略虽受限于wgpu尚未支持的射线追踪管线功能,但已能实现必要的光线追踪逻辑,同时保持一定程度的跨平台兼容性。关于直接光照的计算,Solari采用了包含初始化采样、时域重采样和空间重采样的多阶段ReSTIR DI算法。在初始采样阶段,每个像素随机采样32个光源点,通过重要性采样选择最明亮的样本并完成可见性检测。
时域重采样则借助运动矢量实现跨帧样本复用,通过严格的像素相似性评估避免错误重投影,极大提升了渲染效率。空间重采样则从邻近像素随机选取样本,进一步降低噪声和采样误差。与传统多空间重采样相比,Solari只采用单个空间样本以平衡性能与效果,避免了额外的性能开销和潜在的图像伪影。而间接光照部分的ReSTIR GI算法相较于DI更加复杂且计算成本高昂。GI通过在半球方向均匀采样并追踪光线路径,获取间接辐射照度,结合世界空间光照缓存的查询,有效实现了光线多次反射的模拟。世界缓存通过空间哈希结构对场景中的光照进行体素化存储,并且采用逐帧衰减和更新保证光照数据的新鲜度与准确性。
该方法不仅共享了大部分采样工作,且平滑了新出现区域的光照变化,显著提升了GI质量和稳定性。此外,为了进一步提升渲染质量,Solari集成了NVIDIA的DLSS Ray Reconstruction技术。这一基于深度学习的上采样与降噪方法能大幅减少渲染分辨率需求,同时保持甚至提升画面清晰度。应用DLSS-RR后,整体渲染流程不仅性能大幅提升,还能够有效去除光线追踪过程中的噪点与锯齿,实现更为平滑的视觉体验。性能方面,Solari在RTX 3080 GPU上表现稳健,渲染分辨率设置为900p并通过DLSS提升至1800p,获得了令人满意的运行时长和画面质量。性能瓶颈主要集中在光照样本缓存访问和射线追踪吞吐率上,当前限制较多是由于高寄存器使用量降低了硬件调度能力。
未来的优化方向包括减少单像素的初始采样数、提升采样缓存的缓存友好度、以及探索GI和世界缓存子集的随机更新策略等。Solari的未来发展规划异常丰富。首当其冲的是实现与Bevy标准渲染器功能上的完全一致,比如支持反射性、透明及Alpha遮罩材质,同时扩展更多种类的光源如点光源和聚光灯。光照采样算法也有很大的提升空间,如基于空间和可视性的智能采样策略、引入光照树结构以及结合MegaLights中提出的可见光源列表等先进方案。另外,Chromatic ReSTIR的研究致力于解决多光色光源叠加时采样难题,通过向量加权方法更准确地表现不同颜色的光照贡献,进一步提升渲染色彩的真实感。在全局光照质量方面,当前世界缓存方法存在一定能量损失与时间稳定性不足的问题,尤其在快速移动光源或动态场景下。
为此,尝试结合额外的光线采样与帧间重投影,或采用更灵活的缓存更新机制,是未来重点研究方向。降噪技术同样值得关注,目前Solari依赖于NVIDIA独家的DLSS技术,后续计划引入AMD的FSR Ray Regeneration、Intel的XeSS等跨平台解决方案,甚至是基于神经网络的开源降噪器,例如ReBLUR,拓宽用户群体。总结来看,Solari作为Bevy 0.17版本的开创性光线追踪插件,不仅标志着Bevy引擎功能的大幅跃进,也为实时光线追踪在开源生态内的落地奠定了坚实基础。对于独立开发者而言,Solari既是学习现代图形渲染技术的重要参考,又能通过实践加速自身项目的视觉升级。随着硬件环境和相关软件库的不断成熟,预计Solari将持续演进,推动更多创新技术应用于实时渲染领域。探索未来游戏和视觉技术的同行者,不妨密切关注并参与Solari的发展旅程,携手推动实时光线追踪技术在开源游戏开发社区的广泛普及与创新。
。