这个问题可以从光线追踪GPU硬件、实时光线追踪渲染技术本身两方面来回答。作为一个从业多年的图形程序员,我想试着主要从实时光线追踪渲染技术本身来谈谈我的看法。
目前业界主流的实时光线追踪技术,其实本质上采用的是”传统光栅化渲染管线+光线追踪”的混合渲染管线(Hybrid Rendering Pipeline)形式:
对于这类混合渲染管线,渲染分类可总结如下:
可以发现,光栅化(Rasterization)依然是目前业界主流混合渲染管线的主要渲染流程,而光线追踪一般仅用于锦上添花的次级光线效果的渲染表达(反射、阴影、环境光遮蔽、半透明渲染等)。
换言之,当前我们所熟知的产品级实时光线追踪技术,其实只是对现有光栅化渲染管线的锦上添花与缝缝补补,现阶段扛大旗的依然是光栅化技术。
也就引出了我们想象中与现实中的实时光线追踪渲染管线的区别:
所以,如何完全剥离光栅化管线,完成到纯粹基于光线追踪的渲染管线的切换,并可以达到产品级的交互速率,才是实时光线追踪技术最本质和最理想情况下需要攻克的难题。
当然,在完成一次高品质离线渲染动辄需要数小时的今天,要让纯粹基于光线追踪的渲染管线完全实时化,业界还有太长的路要走。Hybrid Rendering Pipeline依然是未来很多年实时光线追踪技术承载的主要技术形态。
而正如其他答主所述,当前发布的实时光线追踪技术,从渲染策略而言,大多是通过降低每像素采样数量,然后配合降噪技术与数字信号处理技术,以在有限的算力下实现类似真实表现的渲染结果。在当前的这套技术形态下,产品级的光线追踪反射、光线追踪环境光遮蔽、光线追踪阴影等传统光栅化技术难以处理的全局效果,表现都已相当令人惊艳。
当然,在当前的这套Hybrid Rendering Pipeline架构中,依然也存在不少需攻克的渲染技术细节。
从宏观而言,我们在渲染中处理的四要素有:
其中的每一种要素对实时光线追踪而言都有独特的挑战与难题需要攻克。如果完全展开来讲,可能需要较大的篇幅,这里不妨对其中面临的一些典型难题做一个盘点。
在目前的实时光线追踪领域,在每像素1~2个样本的情况下,大多数降噪技术通常对于透明渲染、粒子渲染、体积渲染的渲染效果都并不算好。在EA的PICA PICA Demo[2]中,虽然采用了具有折射和散射的纹理空间OIT(texture-space OIT)技术,但也并不完美,存在时域(temporal)方面的问题。
当下业界需要研究出更好的降噪技术或者相关方案,以在较低的每像素采样数下带来更佳的透明渲染品质。这即是业界目前未攻克的难题之一。
类似上文提及的透明渲染降噪,植被渲染中使用的部分覆盖(partial coverage)方法也会遇到相同的问题。一般情况下,我们可以在命中着色器中进行alpha测试,但镜头一旦移动,就会遇到性能和表现上的问题。主要原因依然在于目前的降噪技术并不能很好的处理这种实时的部分覆盖在每像素1~2样本下的可见性判定。这也是业界目前未攻克的难题之一。
使用实时光线追踪渲染粒子系统的主要问题在于,粒子一般为朝向相机的公告板,如果进行反射,则会出现如下视觉失真现象:
对于光线追踪粒子系统的此类渲染问题,一般的方案是维护两个顶层加速结构(Top Level Acceleration Structures, TLAS),而《战地5》中的解决方案是将粒子朝向光线,有点类似billboard的思想。其中,《战地5》中的方案已是业界目前提出的最佳方案,但依然会有一定程度的失真:
另外,由于固有的动态特性,一些粒子系统必须在加速结构中每帧更新。在少许大型粒子或许多小型粒子上都可能会发生这种更新,因此对于这些粒子系统来说,优化空间加速度结构以快速在整个世界中进行光线追踪则是另一项挑战。
所以,实时光线追踪中对粒子系统更真实的渲染,同样是当前未攻克的难题之一。
首先,使用实时光线追踪进行全局光照,会遇到即使在离线渲染中也存在的各类开放性问题。比如离线渲染中暂未解决的过高方差,小孔全局光照(Pinhole GI)等问题,这些在实时光线追踪领域目前同样需要解决。
而且离线渲染方案中的许多解决方案,不一定都可以运用到实时渲染中。对于实时光线追踪,目前而言必须借助缓存技术摊销着色成本,来达以交互速率进行渲染的性能要求。
即便是EA出品的当前较先进的PICA PICA Demo[2] 中使用的基于面元缓存GI(caching of GI via surfels)的方案,也存在仅能在观察区域生成面元(surfel)的问题。
所以基于实时光线追踪技术的全局光照,目前仍然有大量的难题待解决,需要业界共同努力去攻克。
关于一致性与非一致性难题,不妨看一张图:
且一般来说,更好的处理一致性问题是提升实时光线追踪性能的关键。相邻的光线可以执行类似的操作和内存访问,从而带来较好的性能表现,而有些光线可能会破坏缓存的一致性,从而影响整体性能。
但从反过来说,光线间的不一致性却可以提高蒙特卡洛方法的收敛速度。
可以将这个棘手而两难的问题归纳为理论与系统,或者数学与工程间的碰撞。而实时渲染中最重要的问题,正是协调、权衡与处理这种脱节。
另外,也列举一些目前已有一定进展,且仍然需完善的通用领域,可以将它们分为调度问题(Scheduling)、解耦问题(Decoupling)、整体性渲染问题(Holistic Rendering)三大类:
而以上各类细分领域当中,都有大量悬而未决的问题需要业界共同解决。
综上所述,实时光线追踪技术在其发展的长河中,目前依然处于早期的萌芽阶段,还有海量的难题等待我们去攻克。而随着未来硬件与渲染技术的不断革新,一个完全属于实时光线追踪的新纪元,即将来临。
[1] [GDC 2019] It Just Works Ray-Traced Reflections in Battlefield V
[2] [SIGGRAPH 2019] State-of-the-Art and Challenges in Game Ray Tracing, Are We Done With Ray Tracing
[3] [SIGGRAPH 2019] From Raster to Rays in Games
[4] [SIGGRAPH 2019] Acceleration Data Structure Hardware
[5] [Digital Dragons 2018] Stochastic All the Things - Raytracing in Hybrid Real-Time Rendering
[6] [SIGGRAPH 2018] Modern Graphics Abstractions & Real-Time Ray Tracing
[7] [SIGGRAPH 2018] Game Ray Tracing State-of-the-Art and Open Problems
[8] https://developer.nvidia.com/rtxgi
[9] https://pbrt.org/gallery.html
[10] Real-time rendering 4th [M]. Crc Press, 2019.
[11] https://zhuanlan.zhihu.com/p/102397700
同时也发布一条招聘信息,欢迎充满热忱,热爱游戏开发的人才们一起开发更高品质的游戏: