搜索 Unity

利用 Unity 2021.2 技术更迭版的高清渲染管线 (HDRP) 功能体验真实体积云效果

2021年11月5日 类别 Engine & platform | 10 分 阅读
Image of few clouds with sunlight peering through above a mountainous terrain
Image of few clouds with sunlight peering through above a mountainous terrain
涵盖的主题
分享

Is this article helpful for you?

Thank you for your feedback!

数十年来,扁平的天空盒与高动态范围图像 (HDRI) 技术一直是天空和云层渲染的首选方案。如今,得益于HDRP全新的体积云(Volumetric Cloud)效果,开发者终于可以用自然灵动的云朵来点缀心中的创想世界了。在第一代体积云系统中,我们主要关注运行性能与使用便利度,开发者只需点击鼠标,就能以较低的 GPU性能成本创造出美观的视觉效果。

此内容由第三方提供商托管,该第三方提供商不允许在未接受“Targeting Cookies”的情况下观看视频。如果想观看来自这些提供商的视频,请将“Targeting Cookies”的 Cookie 首选项设置为“是”。

云层渲染简史

上世代主机即将淘汰时,体积云才在极少数视频游戏中登场。一般来说,只有飞行模拟器和少数开放世界游戏才会尝试创建有体积感,也就是占据一部分物理空间的云。

这种体积云中的光散射运算往往要依赖于光线追踪(Ray Tracing),准确来说是光线步进法(Ray Marching)才能完成,渲染成本高昂,应用场景自然有限。其次,大部分3D游戏都直接在平面上(如平地或大海)进行,因此也没有必要搭建广阔、动态的天空系统,让摄像机能飞上/穿过云层。

所以,许多3D应用都乐于采用立方体贴图、假云层或简单的透明材质等静态纹理。通常,静态纹理会被渲染到距摄像机无限远的地方,也造成了天空与地面间的割裂,但这些纹理能以极低的成本为静态场景生成质量足够好的图像。

image of cloudy overcast above snowy mountain range

但随着实时3D渲染技术的进步及各类硬件性能的提升,带有体积云的动态天空新时代已经来临。Unity高清渲染管线(HDRP)将默认支持更为新颖、优秀的视觉体验,以及更加广阔的游戏场景。 

体积云可与体积框架的全局风效互动,还能在地面投下逼真的阴影;体积云还能与体积雾(Volumetric Fog)物理性天空(Physically Based Sky)相互作用,生成漂亮的体积太阳光特效(上帝之光)和让人沉醉的日落。

最后,这些云朵还可被天空反射、环境光探针、局部的反射探针和平面反射等渲染器渲染。所有这些可形成一个统一的云层系统,云层不仅能与其他HDRP系统流畅地互动,其性能成本也不高:PlayStation 4(非Pro版本)仅需 2 毫秒便能完成渲染,新发售的高端GPU更是能快至0.5毫秒以内。

使用简单

你只需用鼠标点击几下就能创建出体积云。首先,在HDRP配置文件与HDRP Global Settings(全局设置)中启用“Volumentric Clouds”。

Graphics settings in HDRP

之后就可以使用体积框架来控制体积云。与多数高清渲染管线效果一样,只要选中现有(全局)体积或新建一个体积,然后为配置文件分配体积云组件即可。您可以通过多项参数来控制云、风、光照、阴影的类型和整体质量,也能调整生成云层的性能成本。

image of overcast clouds above snowy mountainous terrain

简单模式中内置四个预设项:少云多云乌云暴雨云,让不同云景成为可能。这四种天气类型均经过细致调校,可以将细节呈现范围从云层下、云层内、云层上方扩展到 10000 米(33000 英尺)的高空。

在云朵的设置过程中,本地模式的选择非常重要,这关系到您能否进入云层内部与上方区域,也会间接影响性能水平。

  • 如果本地模式被禁用,渲染后的云朵就会离摄像机无限远,这样的渲染风格和高动态范围图像天空很类似。在这种情况下,摄像机的远平面就会被放置在一个合理的距离。显然,本地模式被禁用时,我们永远无法接触到云层。
  • 如果本地模式开启,摄像机就可以在云层下方、内部和上方等不同的空间内穿行。但要获得地平线之上的高视距,考虑到雾浓度,摄像机的远平面要增加到十万米之上。

因此,如果您的项目不需要摄像机在云层内和云层上方移动,可以禁用本地模式,光照和阴影质量不变的同时还能拉近摄像机远平面的距离。 

反之,如果您需要飞入云层和云层上方,请开启本地模式。为了实现基于物理的天空效果,体积云系统会模拟地球曲度,呈现出围裹星球的穹顶形态,从而与天际线上的陆地和海洋自然连接。如果把云顶的弯曲程度提高,那它与世界的交点便会被强行拉近,摄像机远平面的距离也会大幅缩减。

风也是关注的重点,为了重现现实世界中这种典型的浮动气流,我们提供了四种控制方式。举个例子,您可以创建在侵蚀风影响下微微飘动的静态云,也可以让整片云景都随着形状风移动。四种控制方式组合运用,还可塑造各种迷人景致。

除了简单模式中的四项预设,您也可以使用自定义预设,用几条曲线和滑块就能控制大部分的云朵属性。这一模式在几秒钟内就能创建出多种多层云景,功能强大。可能性无穷无尽。

创建阳光射线特效时,切换至体积雾属性,把最大高度体积雾距离设置到数千米就行了。通过这种方式,定向光就能影响大气层,在云层下产生美丽的阳光。

image of cloudy overcast on mountainous terrain with a lake on the bottom left

最后,手动模式让专业用户能够构建云朵的覆盖纹理和查找表模块 (LUT),从而百分百控制查找表模块定义的每一块垂直切片的位置。更多有关纹理影响云朵渲染的信息,详见以下文档

渲染技术

云体积由 2D 覆盖贴图驱动,查找表模块则会就密度、侵蚀、环境光遮蔽等属性在不同海拔高度上进行定义。云层系统使用的两种 3D 噪点纹理则会蚕食云体积,打造出不同的形状:

  • 形状噪点:一种能生成大片云层的低频噪点
  • 侵蚀噪点:一种能在云表面呈现微小细节的高频噪点

高清渲染管线中体积云的渲染使用了光线步进(Ray Marching)技术,该技术从摄像机向对象和光源分步投射光线。对于体积云来说,就是把主光线投向云层体积(Volume),从而对云层表面进行采样。辅助光线则投向太阳,为云朵表面进行着色。

为了在降低性能成本的同时尽量减少视觉退化,渲染过程将以四分之一分辨率进行,期间还将进行时空重投影(Temporal Reprojection)与整合。也就是说,云层系统会不断从前几帧中采样,以形成最终渲染效果。因此,当摄像机高速移动,以及必须渲染部分无历史帧的云朵时,可能会出现一些伪影和重建性伪像。针对这种情况,我们也提供了有效的防伪影方法,支持极快的摄影机移速和风速。以下动画中,以三倍音速移动的云朵也没有出现伪影。

树叶这样的薄几何体也是关注的重点,在临近云朵的像素极难处理的情况下,要保证树叶不产生明显的伪影。

我们也投入了大量精力,确保日出和日落效果足够真实。在这两个时间段,陆地景观和天空曝光度的巨大差异,地球曲度及其造成的阴影,低日照场景中光的复杂散射和长距离传播的光线,对我们来说都是巨大的挑战。

Image of a lake surrounded by mountains with a sunset and clouds in the horizon

当前限制与未来改进

再优秀的系统都有一定限制,体积云系统也不例外。现阶段,针对摄像机在云体下、云体中与云体上方的情况,体积云系统已进行了高度优化。因此,太空中与 12 公里(40000 英尺)之上的高空场景的呈现效果就有些不尽如人意,如下图所示,侵蚀拼贴痕迹显而易见。

view of fluffy clouds hover over the earth's atmosphere from space with sun in the background

此外,我们现阶段只支持一种云体,也就是说,同一种云体的云朵的噪点、风和光照属性都是一样的。之后,我们会着手研究支持多种云体的功能,让您创造出的每个云层都能接受粒度级的控制,变得生动自然。我们还将提供一种统一的方式控制地球中心的位置,以便呈现太空场景。

云上的点光源照明与阴影投射功能也将得到支持,太空和飞行模拟游戏中,舰船驶过投下的阴影和频闪灯的光线都会影响周边的云朵,此时这一功能就大有用处了。本地体积雾也能在某些静态场景中得到应用。

在视觉质量方面,我们会考虑支持两个级别以上的噪点控制,以提升高级平台、交互帧速率和离线应用程序的画面质量。最后,不同云朵预设之间的转换将变得更简单,动态时间循环的实现亦会更高效。

结语

在高清渲染管线项目中运用全新云朵系统,尽在 Unity 2021.2 技术更迭版,诚邀您速来尝鲜。过去的几个月里,我们竭尽全力,确保体积云美观之余更节省 GPU 性能成本。在高端 GPU 上使用随机噪点生成器玩转高质量光线步进云是一回事,在主流硬件设备上为高帧率应用程序创建逼真的云朵形状又是另一回事,后者更加复杂。

Image of scattering clouds over a flat snowy terrain with hills

我们希望体积云不仅能提升项目的视觉质量,让天空充满动感,更能为利用天气变化特性的创新游戏玩法提供可能性。在交互应用程序中,光照和天气往往都被视作静态组件,但这种设定反而让受众错失了探索同一环境中不同场景的机会。

有关 Unity 2021.2 技术更迭版中体积云与镜头光晕、光照锚点等渲染技术的更多信息,敬请关注今年夏季的计算机图形图像特别兴趣小组 (SIGGRAPH) 大会。请注意,本文刊发时,云朵系统已进行了多次更新改进,但仍可参考本文概览系统功能。

Image of blue sky with clouds over a snowy mountain and terrain

如有任何反馈意见,请随时通过HDRP高清渲染管线论坛提出,也欢迎大家积极报错。感谢您的耐心阅读,请继续关注体积云系统的后续更新。

作者简介

Pierre Yves Donzallaz(技术美术经理)在 AAA 的实时渲染领域有十余年的技术美术经验,他擅长打光、关卡美化、工具设计和UX改善。拥有弗里堡大学计算机科学学士学位的Pierre

参与过多款获奖游戏及大型3A项目的制作,其中包括《孤岛危机》系列、《崛起:罗马之子》《侠盗猎车手5》《荒野大镖客2》。 

现阶段,Pierre正与其它技术美术伙伴一道致力于提升美术人员的工作效率,为全球用户提供教程支持,与工程师、设计师一起开发新功能。

 

Anis Benyoub(高级图形开发)目前正致力于拓展游戏与实时应用的渲染管线。Anis热衷于研究蒙特卡洛积分,物理性渲染和实时渲染的性能(他也常在社区里和大家分享知识)。 

在进入Unity之前,他曾先后担任Pretty Simple Games图形工程师、Autodesk 3DS Max的3D研发工程师及Stingray游戏引擎的核心软件工程师。Anis拥有蒙特利尔工程学院计算机科学硕士学位(计算机图形方向)和里昂国立应用科学学院计算机科学工程硕士学位。

2021年11月5日 类别 Engine & platform | 10 分 阅读

Is this article helpful for you?

Thank you for your feedback!

涵盖的主题
相关文章