
游戏资讯:光线追踪技术简介与应用
什么是光线追踪?
如果你一直关注新一代游戏主机的发布,你可能听说过“光线追踪”。
光线追踪是一种用于实现逼真图像的渲染技术,它通过模拟光的折射和反射来生成高质量的画面。换句话说,它让视频游戏中的光线行为像在现实生活中一样。该技术会模拟光线的轨迹,追踪光束在物理世界中的路径。虽然对硬件要求较高,但随着GPU性能的提升,光线追踪正逐渐成为现代游戏的标配,带来令人震撼的视觉效果。
光线追踪的挑战与改进
然而,光线追踪也存在一些缺点。如果开发者只依赖光线追踪,便需要投射大量光线以确保全局光照的高质量实现。考虑到游戏中环境高度互动,用最先进的高端GPU进行实时渲染仍然具有一定的计算压力。
为此,我们团队一直在研究一种结合了动态照明技术Enlighten和实时光线追踪的混合渲染方法,此创新方案旨在在保证画质的同时提升性能,并最大程度发挥光线追踪的效果。
开发中的项目与未来展望
这个项目仍在开发阶段,我们预期最终的成果会在性能和效果方面都实现大幅提升。我们已经用虚幻引擎4(Unreal Engine 4)构建了一个火车场地的演示场景(该技术也可以应用到其他引擎),场景中的光源仅包括一个定向光和一个天空光。
光线追踪反射与Enlighten动态照明
反射的基本原理
我们首先介绍利用Enlighten实现的光线追踪反射效果。反射通常分为两个部分:漫反射(Diffuse)和镜面反射(Specular/Reflection)。
漫反射是视角无关的,反映的光线不会随观察角度变化;任何角度观看都得到相同的效果。镜面反射则是视角相关的,反射方向会随着摄像机位置的不同而改变。本节的重点是镜面反射效果。
反射的实现方式
在游戏渲染中,最常用的是环境立方体贴图(称为“Reflection Capture”在UE4中),它模拟环境反射效果。另一种常用方法是屏幕空间反射(SSR),它能实现漂亮的反射效果,但依赖于反射在屏幕内是否可见,若反射在屏幕之外则容易产生伪影(Artefacts)。
而光线追踪技术则不同,它通过从表面发射反射光线,从而计算出反射的结果,场景中的每个反射点都能获得高精度的反射效果,不受SSR的限制,能呈现更真实、更完整的反射图像。
Enlighten的反射处理方案
目前,Enlighten采用实时更新环境立方体贴图的方法。当光线角度发生变化时,CPU会实时更新反映环境的立方体贴图(直接与间接光照),GPU只需采样这些贴图,整体性能影响较小,不会显著降低游戏帧率。
相比之下,完全使用光线追踪反射可以实现整个场景(包括屏幕外的对象)的实时更新,获得更高精度的反射效果,但会消耗大量计算资源。特别是对于高光反射(glossy reflections),需要发射多条光线甚至多次反弹,性能成本较高。因此,我们的目标是结合两者优势:在保持高质量反射的同时,通过动态切换实现性能优化。
Fallback(回退)机制与性能优化
为了应对性能压力,当反射表面的粗糙度(roughness)超过某个阈值,或者多次反弹导致性能瓶颈时,可以启用Enlighten的立方体贴图作为回退。有了这个机制,场景反射可以在高性能和高质量之间灵活切换。
上图显示启用Enlighten动态环境贴图后的反射效果,下图则是在引入回退机制后的效果。这种设计有效缓解了由关注光滑反射带来的噪点问题,同时兼顾性能表现,使得游戏体验更加平衡。
常见问答(FAQ)
Q: 光线追踪对硬件配置要求高吗?
A: 是的,光线追踪需要高性能GPU的支持,目前主流的高端显卡(如RTX系列)都已支持相关技术,但在低端硬件上可能无法实现平滑的性能体验。
Q: 未来光线追踪在游戏中的应用会越来越普及吗?
A: 随着硬件性能的提升和技术的成熟,光线追踪在游戏中的地位将会越来越明显,为玩家带来更加逼真、沉浸的视觉体验,这一趋势已逐渐显现。
最新游戏技术:光线追踪与光照优化
随着游戏画面对真实感的不断追求,光线追踪技术在增强场景光影效果方面发挥了巨大作用。本文将介绍最新的光线追踪技术应用,包括反射、环境光遮蔽(AO)、以及光源可视性检测等内容,帮助开发者实现更逼真的游戏画面。
反射效果演示
在中心球体中可以观察到镜面反射的效果。通过动态更新的间接光源,场景的反射更加真实自然。
视频观看:反射球演示视频
环境光遮蔽(AO)与光照映射
请注意右下角的轨道,它的粗糙度值被调整:上部纹理光滑,下部纹理粗糙。粗糙区域会回退至Enlighten的环境光映射(cubemaps),实现实时的无缝过渡。视频观看:环境光映射演示视频
性能比较与优化
在相同场景下,我们对比了加入Enlighten前后的性能表现。没有使用Enlighten时,光线追踪反射耗时约1.72毫秒,加入后仅增加到1.87毫秒,差异很小。通过“fallback到Enlighten”功能,随着最大粗糙度下降,性能得到了显著提升。
光线追踪中光源可视性(Enlighten Visibility)
在游戏运行时,引擎不仅需要提供光源信息,还需传递光源的阴影信息,即Enlighten的可视性数据。这些数据确保光线不会穿透遮挡物,从而避免光泄漏问题,提高间接光照的准确性。
为了收集这些可视性数据,Enlighten预定义了场景中的采样点(见右侧示意图)。传统的方法包括采样阴影贴图或光线追踪,而最新引入的硬件支持的光线追踪技术,则实现了基于光线追踪的Enlighten可视性采样。该方法从采样点发射光线到光源,遇到障碍物则将可视性设为零。即使光源位置变化或场景中有移动物体,效果都能实时更新。该技术支持所有类型的光源,且易于整合到支持光线追踪的游戏引擎中。
视频演示:光源可视性光线追踪演示
实时光线追踪中的间接光照变化
通过观察上方视频,可以看到屋顶天窗关闭后,间接光逐渐变暗。另在隧道中,随着直射光减少,内部的间接光也随之减弱,整体变得更加阴暗,显示出实时动态光照的效果。
性能方面,传输的光线类型仅限于阴影光线。光线数量由场景中的可动光源及采样点影响。在示例中只有一个定向光源影响整个场景,产生了大约40,000个采样点。使用GeForce RTX 2060显卡,处理时间约0.04毫秒,效率较高。
光线追踪的扩散(Diffuse)间接照明
除了反射效果, diffusely照明也是实现逼真场景的重要因素。以下为一个示意图,展示了聚光灯照亮天花板的部分,这是直接光。未被照亮的部分(问号区域)本应由间接光照亮,这正是Enlighten的优势所在。
Enlighten在预先计算阶段会生成静态物体(位置和形状固定的物体)的优化数据。在实际运行期间,利用这些数据结合引擎提供的直射光信息,模拟光的多次反弹,产生动态的间接照明效果。
最终效果如下:
视频观看:Enlighten间接光演示
实时更新的间接光:地平线和天空光
启用Enlighten后,来自方向光和天空光的间接光能实时更新。然而,场景中的移动物体(如蓝色列车)在预计算阶段未考虑动态变动,导致其反弹光无法实时渲染。这一点在实际场景中需要注意优化。
最终采样(Final Gather)
Final Gather技术会从某一采样点发射光线,整合光线的照明信息。由于只模拟一次反弹,通常会与其他全局照明技术结合使用,以增强光照的自然过渡与细节表现。
常见问答(FAQ)
Q: Enlighen光线追踪对硬件要求高吗?
A: 依赖于硬件的支持,目前支持硬件光线追踪的显卡(如NVIDIA RTX系列)可以有效实现实时光线追踪应用,提升性能表现。
Q: 采用Enlighten技术后,性能影响大吗?
A: 实验显示,加入Enlighten的额外成本较低,尤其是在优化采样点数量和利用硬件加速的情况下,能够在保证画面效果的同时基本保持流畅。
终极光照技术:Enlighten 与 UE4 Final Gather 的对比
在路径追踪中,一个关键步骤是通过像素发射光线,形成“Gather Point”。当光线击中某一区域,这会触发Gather Point的生成,随后从Gather Point向光源发射阴影光线。这一过程常被称为“下一事件估计”(Next Event Estimation)。相较于随机发射光线,它直接朝向光源进行转发,从而提高收敛速度。
Gather Points与间接光照
通过Gather Points,我们可以对屏幕像素进行采样聚合,得到间接光照的效果。例如,图中显示了光从可移动的物体反弹而来的效果。
Enlighten光照与UE4 Final Gather的对比
Enlighten支持无限弹跳,提供稳定的光照结果,且GPU负载较轻。然而,其细节受到光照贴图像素大小的限制,且无法对移动物体提供弹跳。而UE4的Final Gather则能实现优美的首次弹跳效果,并且支持移动物体的反弹,但仅限于第一次弹跳,且存在噪点。
两者的互补优势
如上所述,两者各有优势与限制。通过结合使用,可以同时获得Enlighten的无限弹跳和Final Gather的优异首次弹跳效果,还能实现对移动物体的光线弹跳。
实现方法:在Gather Point或屏幕像素加入Enlighten
可将Enlighten的结果添加到屏幕像素或Gather Point中。为了简便,我们选择在Gather Point加入Enlighten效果。这意味着Enlighten的结果会进行多一次弹跳,从而能反弹到移动对象,带来更明亮、更少噪点的光照效果。
实际效果对比
通过图像可以看到,加入Enlighten后,场景变得更加明亮,特别是在圈出的区域。右侧红色的砖块受到多次弹跳的光照影响,颜色变得更丰富,发光更加自然。可移动的火车也显示出多次弹跳的效果,使光线更真实。
效果与性能比较
左下角为路径追踪结果作参考。将其与UE4的Final Gather及加入Enlighten反射后的效果对比,二者结果非常接近路径追踪。同时,加入Enlighten反弹后,噪点明显减少。性能表现方面,单纯使用Final Gather的创建Gather Point路径约需3.06毫秒,加入Enlighten后略升至3.58毫秒,性能负担较为轻微。
未来发展方向
目前此技术仍在开发中,计划在Enlighten 3.12版本中引入支持光线追踪的可视性检测,以及结合光线追踪反射与Enlighten的早期访问版本。结合光线追踪的Final Gather与Enlighten的应用将作为实验功能推出。
更多信息与教程
关于Enlighten的详细信息,点击 这里。也可以在YouTube上查看最新的Enlighten教程视频,以了解更多实用技巧和演示内容。