随着高清渲染管线(HDRP)7.2.0版本的发布,实时光线追踪功能的预览版也上线了。
高清渲染管线是用于制作高清晰度和逼真图像的管线。在Unity2019.3及 2019.3.2f1版中(实时光追最低要求平台),管线自7.2.0版正式结束预览阶段。若想了解更多详情,请点击此处,本博文将着重介绍HDRP中的光线追踪功能。
HDRP遵循真实物理渲染的准则,但光栅化的管线使得光照的处理具有许多局限。在HDRP中,由于管线采用的是屏幕空间近似值,成像时会遇到清晰度的问题,而实时光线追踪并没有此问题,可以实现更高的图像清晰度。功能还不用预烘焙光照,可以改善艺术创作的工作流。
HDRP的光线追踪有两种不同的用法:
- 实时光线追踪和光栅化混合使用,即所谓的“混合管线”
混合管线适用于带实时渲染的应用,管线依靠标准的光栅化技术——即HDRP管线,可将原效果替换为光追版效果。光栅化通常会有难以解决的局限,如屏幕空间近似值问题,而光线追踪并没有这样的问题,最终的图像质量也会更好。
HDRP中支持光线追踪的效果会有对应的光线追踪效果设置,可以通过效果上的光追选项界面或专门的体积设置来控制效果。下方将列出HDRP中可用的光线追踪效果,所有效果都与普通和Shader Graph中的Lit.shader、Unlit.shader和LayeredLit.shader相兼容。HDRP有几种不同的反射:屏幕空间反射( Screen Space Reflection)、反射探针(Reflection Probe)、平面反射(Planar Reflection)和天空反射(Sky Reflection),而新增的光追版反射可以制作出更清晰的图像。功能可在屏幕空间反射的体积(Volume)组件下打开。
Unity中的光照贴图工具可以生成光照贴图或光照探针,来储存场景作用于对象上时产生的间接散射光照。虽然该方法可以制作出逼真的图像,但是生成的光照是烘焙后的静态光照。光追版全局光照(Ray Traced Global Illumination)则是一种全新的方法,它位于全局光照的体积组件中,可用于替换烘焙光照。
屏幕空间环境光遮蔽(Screen Space Ambient Occlusion,SSAO)技术可以模拟场景中复杂的间接光照效果,产出的成果非常逼真,但技术完全依靠屏幕上的显示数据,有许多可见的瑕疵,而光追版环境光遮蔽弥补了前者的缺点。功能可在环境光遮蔽体积组件中打开。
光追版阴影可用于替换HDRP中的普通阴影,功能具有以下优点:不仅可以避免阴影贴图分辨率和偏差问题,还能控制阴影边缘的半影(支持点光源Point、聚光源Spot和方向光Directional),支持带色(方向光)或半透明阴影(点光源和聚光源),以及矩形光源(区域光源)下随视线变化的阴影。所有这些功能可在相应光照的选项中打开。
有些时候,阴影贴图并不能很好地捕捉到细节,比如由于渲染目标的分辨率过低或采样偏差会造成贴图无法捕捉到对象与遮光物之间的接触部分。而HDRP的接触阴影则可以改善这一状况。接触阴影依赖于深度信息缓存中的光线行进数据,有可能会造成屏幕空间出现瑕疵,而光追版接触阴影则可以避免瑕疵的出现。功能可在光照选项中打开。
在光栅化管线中,渲染多层透明反射材质可能会比较困难。HDRP只能渲染单层的反射表面 ,而光线追踪中,渲染效果会更加精确。递归渲染(Recursive Rendering)的体积组件可以渲染多个透明对象叠加反射和折射的效果。要视线该效果,对象材质的渲染通道(Rendering Pass)上需要设定通道为光线追踪。半透明表面的渲染是一个复杂的问题,即使是HDRP也不能完美解决。你可以在次表面散射的体积组件上,选择用光线追踪功能来模拟这类效果。
实时光追需要大量的GPU运算,每条光线的耗费多少都会明显地影响到应用最终的帧率。以当前的硬件水平,如果同时启用所有这些光追效果会导致帧率变低,请根据需求小心选择。尤其是在游戏中,最好只启用一到两种效果,避免帧的渲染时间过长。
HDRP中的光线追踪效果有两种模式:质量优先与性能优先。不同的模式还有进一步细分的选项。质量优先(Quality)的光照效果可以有多个“反弹”效果(比如反射或全局光照),在为模型着色时采用更少的近似值,图像的保真度较高,但也非常耗费GPU性能。因此,不推荐在游戏中应用质量优先设置。性能优先(Performance)模式相较而言帧率更高,可以实现复杂的性能优化。你可以在这场SIGGRAPH 2019的演讲“Leveraging Real-time Ray Tracing To Build A Hybrid Game Engine(利用实时光线追踪构建一个混合游戏引擎)”,来了解性能优化的更多详情。部分效果只支持质量优先模式,如递归渲染。光追版全局光照和递归渲染性能耗费较高,不利于实现高帧率,而适合制作参考用图像。次表面散射功能的性能耗费也容易变得非常高,请小心使用。在游戏中,推荐只在阴影、接触阴影、环境光遮蔽和反射上使用光线追踪的性能优先模式。其它效果可用于制作互动式非游戏应用,而要稳定帧率,请避免大量使用没有性能优先模式的效果。减少光线追踪效果的渲染量也可以提升性能。Shader Graph中有一个专门的节点,可以在光线追踪渲染材质时减少性能耗费。渐进式路径追踪管线专用于制作互动应用中的高质量图像渲染。它与混合管线不同,并不依赖于光栅化管线来着色,仅在后期处理中需要光栅化。在此模式下,光照模拟非常精确,可以达到电影制作的水准,因此处理的时间也较长。该方法会在图像达到最终效果前先在前几帧生成带噪图像。
路径追踪的体积组件在启用时,会替换掉HDRP中其它任何光线追踪或普通管线效果。该效果可用于制作参考图像的对比。
HDRP 7.2.0的光线追踪目前为预览版,功能依靠DX12和DXR的低级API,在Unity 2019.3.2f1中仍处于预览版,因此会缺失部分功能。预览版意味着部分功能、用户界面、性能、工具和数据格式需要在未来版本中进一步完善,数据移植并不能百分百成功。我们不推荐在实际制作中使用预览版功能。
Unity 2019.3的HDRP光线追踪目前有以下局限:- 功能仅支持DX12的D3D12_RAYTRACING_TIER 1.0。
- 不支持部分HDRP材质,包括Hair头发、StackLit堆栈受光、Eye眼睛和AxF材质。
- 功能不能正确剔除阴影,而是使用了锥体剔除(Frustum Culling)方法。
- NVIDIA GeForce RTX 2060, RTX2080 Super, RTX 2070, RTX 2070 Super, RTX 2080, RTX 2080 Super, RTX 2080 Ti
- NVIDIA Quadro RTX 3000(笔记本专用)、RTX 4000、RTX 5000、RTX 6000、RTX 8000
- 图灵架构:GTX 1650、GTX 1660Super、GTX 1660 Ti帕斯卡架构:GTX 1060、GTX 1070、GTX 1080、GTX 1080 Ti
- NVIDIAQuadro: P4000, P5000, P6000, V100
如果你的计算机配备了以上的显卡,就能在Unity中运行光线追踪。在打开Unity前,请确保NVIDIA的显卡驱动为最新版本。若想取得最佳创作体验,请使用NVIDIA Quadro or Studio Drivers(NVIDIA Quadro或工作室驱动“studiodrivers”),确保Windows版本至少为1809。若要开始使用HDRP的光线追踪功能,可先来查看介绍文档。文档中包括了文中所有光线追踪效果的详细介绍。
最直观、最简单的入门方法还是来探索我们的演示项目,SmallOfficeRayTracing(光追下的小办公室)。项目已经设置好光追,启用好了各种效果和配置,点击链接下载。https://github.com/Unity-Technologies/SmallOfficeRayTracing演示项目包含了三个场景,分别展示了实时光追三种使用案例。
Ray Tracing Performance Scene(性能优先的光追场景)
该场景启用了多个光追效果,能实现较高的性能(在NVDIA2080上达到约60fps)。下方为启用的效果:
- RayTraced Reflections(光追版反射)
- RayTraced Global Illumination(光追版全局光照)
- RayTraced Directional Shadow(光追版方向阴影)
- RayTraced Area Light Stochastic Shadow
- RayTraced Ambient Occlusion(光追版环境光遮蔽)
- Ray Tracing Quality Scene(质量优先的光追场景)
该场景除了有性能优先场景的效果外,还有一个额外的递归渲染效果(Recursive Rendering)。效果全采用了质量优先的配置(如果有质量优先的模式),并且光线的反弹次数也有增加。Ray Tracing Path Tracing Scene(应用路径追踪的光追场景)使用渐进式路径追踪方法渲染。
为了帮助你正确地从零创建新的光追项目,我们提供有HDRP向导。向导可以验证HDRP与DXR的设置是否正确,可以改正错误的设定。
你也可以参考Unity的说明文件,手动创建光追项目。https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@8.0/manual/Ray-Tracing-Getting-Started.html- HDRP材质(StackLit堆栈受光、Hair头发等等)
- 几何形(Terrain地形、Particles粒子等等)
Unity 2020.1将支持蒙皮、融合形状和Alembic变形。
你可以立即开始使用HDRP的光线追踪,但功能目前并不能用于实际制作。阅读下述文章,了解更多相关介绍和应用:
此外,您还可以加入Unity Connect HDRP高清渲染管线学习小组,找到志同道合小伙伴,轻松get海量资料,更有技术大咖不不定期现身答疑解惑。
https://connect.unity.com/g/unity-hdrpUnity Learn Premium旨在为广大开发者、创作者提供更为广泛、更为全面、更有针对性的学习资源。成为Premium用户之后,将能够获得Unity与Pluralsight合作的明星系列课程《持剑勇士》开发(Unity Game Dev Course)、Unity与Oculus合作的VR课程《Design, Develop, and Deploy for VR》等优质学习内容。
针对大中华区用户,Unity Learn Premium 4个月免费使用权益将持续至5月底。