Q2VKPT:完全重写的Quake II,具有逼真的照明


Q2VKPT是第一个具有全光线追踪功能的可玩游戏,它使用与电影业中使用的相同的现代技术有效地实时模拟全动态照明(请参阅迪士尼实用的路径追踪指南 )。

具有光线追踪功能的GPU模型的最新版本为游戏图形的未来开辟了全新的可能性,但是,正确使用光线追踪并不是一件容易的事。 虽然一些游戏开发人员开始探索渲染阴影和反射的可能性,但Q2VKPT是第一个为所有类型的光传输(直射,漫射和反射光)实施有效的通用解决方案的项目(请参阅“媒体”部分)。 在电影业中,这种统一导致灵活性和生产率的显着提高 。 游戏技术的这种发展有望在未来几年内在视觉准确性和图形逼真度方面实现类似的改进。 该项目应作为对计算机图形学研究和游戏行业概念的确认; 此外,它还允许游戏迷们了解游戏图形的潜在未来。 除了使用硬件加速的光线跟踪外,Q2VKPT主要由于自适应图像滤波技术而提高了效率, 该技术可以智能地跟踪场景照明的变化,以便尽可能多地重复使用先前计算得出的信息。

关于项目


该项目在GitHub上作为开源发布 。 它将我们的Vulkan光线追踪器集成到Q2PRO客户端中。 该项目之所以出现,是因为需要对快速运行的测试内容进行计算机图形学研究。 它的灵感来自于2016年编写的路径跟踪渲染器的第一个有趣结果。

故事


VKPT和Q2VKPT是由Christoph Schied创建的一个业余项目,目的是测试该游戏中计算机图形学的研究结果。 目前,该项目包含12,000行代码,并完全替代了Quake II的原始图形代码。 最初,其原型是用OpenGL编写的,其中包括Johannes Hanika(实验性光线跟踪 ,着色器,GL / Vulkan校正),Addis Diettebrand(照明层次结构,调试可视化),Tobias Zirr(照明采样,网站,信息性文本)和Florian Rybold(初始覆盖范围)。 Stefan Bergmann,Emanuel Schrade,Alice Jung和Christoph Peters提供了额外的帮助( 有点噪音 )。

可下载资料



录影带




开发中的镜头未成功: 带故障1的 视频,带故障2的视频

屏幕截图


我们建议您自己观看视频或玩游戏,因为在运动中更好地感觉到全动态照明。

使用光线跟踪创建的全动态全局照明。 添加了由光线跟踪,光泽反射和一级间接照明反射创建的阴影










路径跟踪器的输出(左)和应用的降噪滤波器(右)

屏幕截图比较


技术领域


Q2VKPT在Vulkan API上实现,能够使用去年出现的新硬件光线跟踪功能。 多亏了他们,游戏可以达到接近60 FPS(2560x1440,RTX2080Ti)的水平,并具有实时追踪的逼真的全球照明模型,具有全光线追踪和动态阴影。 使用路径跟踪进行全动态照明可以使您大大增加游戏场景阴影的细节,自然而然地创建了锐利而平滑的阴影,发光材质和预期正确反射的复杂交互。 此外,光可以自然地传播到各处,像现实世界一样连接场景。 具有预先计算的照明或实时粗略光栅逼近的传统解决方案将永远无法以可比的分辨率获得此类细节,因为有关照明的全部信息量将超过任何存储限制。

技术细节


Q2VKPT使用许多技术来使计算上昂贵的方法适应以前仅在电影行业中使用的游戏。 它们的核心是自适应时间滤波器,它可以智能地重用先前帧的计算结果(这是Christoph先前的研究项目 )。 该滤波器用于已经广泛使用的时间抗锯齿功能,并将跟踪临时变化的过程从简单的图像空间扩展到光传播路径的高维空间。 跟踪路径中的变化是必要的,因为路径跟踪是一种随机算法,这既有其长处也有其弱点:它可以以通用的方式处理所有类型的光传播,但是要使结果变得可靠可能会花费很长时间,对于一个结果来说可能太长实时游戏中的帧。 图像空间中的简单解决方案(例如时间抗锯齿)无法处理此级别的不确定性。

随着时间的流逝,我们探索了几种技术来寻找影响游戏中每个表面的光源。 选择正确的光源对于图像质量至关重要,因为如果选择错误,路径跟踪器的输出将非常不可靠,这将使时间过滤器删除路径跟踪器应创建的所有精美细节。 在原始原型中,使用了电影行业中使用的完整光源层次结构:根据层次结构划分光源,我们可以同时计算多个光源的影响,这使我们能够快速从计算中排除遥远和弱光源以及方向错误的光源。 但是,事实证明,这样的计算难以精确,并且遍历层次结构的计算成本也难以控制。 由于原始《雷神之锤II》使用了大量潜在的可见空间(潜在可见集合)来切除场景的不可见部分,因此我们决定通过从这些场景的每个部分的潜在可见源列表中提取来获得。 在当前版本中,我们已对列表中每个来源的影响进行了部分准确的计算,并在每个帧中随机选择了这些列表的适当子集。 因此,渲染器可以快速找到所有光源,并且我们可以在受控的恒定时间段内执行照明效果的所有计算。

问与答


为什么我的游戏“崩溃”?


我们在业余时间进行此项目,因此我们没有足够的力量进行仔细的质量控制。 请向我们的GitHub存储库的问题跟踪器发送错误报告!

为什么没有颗粒? 我需要飞弹和飞弹的火花!


不幸的是,我们没有足够的时间向猎枪添加光源。 至于其他粒子,我们做出的执行光线跟踪的决定只是稍微简化了渲染粒子的过程。 如果发现时间,我们将在以后解决!

如今,游戏看起来如此逼真! 为什么要使用路径跟踪?


现代游戏极大地扩展了基于光栅化图形的传统功能。 但是,这些改进的代价是:现代游戏的渲染引擎已成为极为复杂的高度针对性的技术。 为了获得没有伪影的可接受的图像,必须以许多分辨率和比例分别计算照明,阴影和反射。 跟踪路径和其他Monte Carlo渲染技术使您能够找到摆脱这个历来复杂的系统的出路。 实际上,他们已经在电影界解决了这个问题 。 我们的原型是在视频游戏行业中如何实现这一目标的第一个答案。

雷神之锤II是一款古老的游戏! 如果这些技术有未来的发展,那么今天它将以6000 FPS的频率运行!


是的,《雷神之锤II》是一款相当老的游戏,几何复杂度很低,但是路径追踪的主要限制因素不是光线追踪或几何复杂度。 实际上,当前的原型可以跟踪更多的射线,而不会显着降低帧速率。 Q2VKPT原型中使用的技术的计算成本主要取决于(间接)光散射的计算量和光源的数量。 《雷神之锤II》最初有很多光源,在这方面,它仍然是一款相当现代的游戏。 另外,光散射事件的数量不取决于场景的复杂性。 因此,我们可以假设我们使用的技术非常适合于更现代的游戏。

为什么要参加雷神之锤II?


由于《雷神之锤II》的消息源是公开发布的,因此该游戏本身具有悠久的改装历史。 这是在现实世界中测试科学研究的绝佳沙盒。 尤其是,游戏具有活跃且具有竞争性的游戏玩法,这对渲染技术的性能和可靠性提出了很高的要求。 最后,从某种意义上说,《雷神之锤II》仍然是一款相当现代的游戏,因为它最初发布时具有复杂而艺术的照明设计。

如何使用Q2VKPT作为基准?


按下“〜”键打开控制台。 在Quake 2的演示版本中,可以使用命令“ timedemo 1; 演示q2demo1“,完整版-命令” timedemo 1; 演示demo1”。 内置的探查器是使用vkpt_profiler 1命令启动的。 它提供了有关各个渲染步骤的GPU时序的详细信息。

路径跟踪与光线跟踪有何不同?


路径跟踪是一种优雅的算法,可以模拟光在虚拟场景中传播和散射的许多复杂方式。 其基于物理的照明模拟可提供高质量的渲染。 路径跟踪使用射线跟踪来确定散射事件之间的可见性。 但是,光线跟踪只是可以用于许多目的的原始操作。 因此,仅光线跟踪不能创建逼真的图像。 为此,您可以使用光传播算法,例如路径跟踪。 但是,尽管事实证明它优雅且非常强大,但是天真的路径跟踪在创建稳定的图像方面非常昂贵且耗时。 我们的项目使用了智能自适应滤波器,可以在几帧和几像素内重用尽可能多的信息,以创建可靠,稳定的图像。

路径跟踪和光线跟踪-游戏图形的未来?


具有光线追踪功能的GPU的最新推出为游戏图形的未来开辟了全新的可能性,但是正确使用光线追踪需要一种简单的方法。 我们项目的目标是找出缺少的内容,从而为未来的光线追踪图形创建直接的路径。 尽管科学研究中已经解决了一些问题,但是直到您开始实现游戏的完整渲染器时,许多实际问题仍然不可见。 将来,我们计划研究其中的一些问题,例如,更好的照明采样,改进的过滤以及更一致的软件渲染器结构。 为了使这些更改变得广泛,需要基于光线跟踪和路径的新的,异常的渲染器任务的好的解决方案。

追踪路径最终能否解决所有图形问题?


路径跟踪和类似方法可以很好地解决游戏图形的许多复杂任务。 但是,它们的概率性质增加了很多新任务,必须解决这些问题才能创建清晰(无噪声)的高质量图像。 Q2VKPT原型中的过滤方法是可靠的统一方法的第一步,该方法使您可以使用路径跟踪在渲染中实施完全统一的粗略搜索方法。 在未来的几个月和几年中,我们期望并希望看到朝着这个方向进行的其他研究!

Q2VKPT是否使用原始游戏中的照明图?


原始的Quake 2引擎使用预先计算的光照贴图,其中包含柔和的阴影和漫射间接照明。 Q2VKPT用完全动态的仿真完全替代了静态照明,该仿真将静态和动态光源统一起来。

Q2VKPT每个像素发射多少射线?


发出的射线数量取决于第一可见表面。 在不透明的表面上,Q2VKPT对每个像素使用一个光束来查找直接和间接的可见表面。 此外,对于两个表面,Q2VKPT都会向随机选择的光源发射一个光束。 因此,Q2VKPT为每个像素发出至少4束射线。

Q2VKPT是否使用栅格化?


传统上,光栅化器用于查找游戏中摄像机可见的表面。 在Q2VKPT中,渲染完全通过光线跟踪完成,因此不使用光栅化器(二维用户界面元素除外)。

Source: https://habr.com/ru/post/zh-CN436754/


All Articles