体验HDRP和URP的新Unity Terrain Demo场景

XIAOXI LIU / UNITY TECHNOLOGIESContributor
Feb 18, 2022|18 Min
体验HDRP和URP的新Unity Terrain Demo场景
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。
在本文中了解技术美术的制作体会,并学习怎样做出一个有机的游戏环境。

为游戏制作高度逼真的环境是一项巨大的工程。为了帮助用户应对挑战,我们在2021.2 Tech Stream版中推出了许多新功能,包括新的地形图章笔刷、精细的材质绘制控制、地形细节的GPU实例化功能和SpeedTree集成,外加其他地形创作的体验改进。我们还更新了免费的Terrain Sample Asset Pack,让你的开发先人一步。在这一切的背后,是我们的技术美术团队在用Unity的高清渲染管线(HDRP,用于PC及高端主机)制作和优化这个高度逼真的环境,并将其迁移到Unity的通用渲染管线(URP,用于各类平台)。敬请享用我们总结的提示、技巧和最佳实践,以及新的Unity Terrain URP Demo场景HDRP Demo场景

技术美术团队介绍
刘小溪

大家好。我叫Xiaoxi Liu,于2018年加入Unity,是一名技术美术。我专注于改进UnityTerrain系统到Shader Graph的功能和美术工作流程。在业余时间,我喜欢和我四岁的儿子一起户外运行。

巴林顿·坎贝尔

大家好,我的名字是Barrington Campbell。我在2019年作为实习生加入Unity,然后在2020年转为全职的技术美术。在Unity时,我的工作是改进Terrain系统,从事工具开发和改进用户工作流程。工作之余,我喜欢改装自己的跑车,在周末开车竞速。

制作有机环境的技巧和窍门
使用最新的Terrain Tools

Terrain Tools包起初于2021.2 Tech Stream版内中验证完成,目前可在Package Manager和Worldbuilding功能集中安装。该包配备了额外的地形画笔和实用的工具,可加快你的世界建设流程。

Unity Terrain 卫星

内容在引擎与外部DCC间的往返

在Terrain Demo项目的制作前期,我们的技术美术团队挑出了几个关键要素予以着重关注,并最终决定优先制作详细的高度图和密集的植被。

我们使用了程序化地形生成工具Gaea 来生成高清heightmap(高度图)和splatmap(泼溅图),再使用Toolbox将这些贴图导入编辑器。在处理高度图时,我们使用了Import Heightmap工具将其应用于一张4x4的平铺地形,比例为4000距离单位。然后又使用Import Splatmap工具将splatmap应用到地形上。这个流程是我们在制作过程中确立的,它可以支持内容在Gaea和Unity Terrain间的往返编辑。

在初次导入Unity后,我们便取得了一张非常不错的地形作为基础,其中有部分区域仍需手动调整。

用高度图图章绘制

Stamp Terrain(地形图章)笔刷是一种可以快速修改地形高度、让地形更加逼真的工具。Terrain Sample Asset Pack自己包括几张现成的高度图,当然你也可以用DCC制作自己的高度图。

用Terrain Layer(地形层级)材质绘画

你可能已经知道,Unity的Terrain材质是应用在一个个的Terrain Layer上的。Paint Texture笔刷支持在场景视图中选取和改变地形材质,而Brush Mask Filters和改进后的Terrain Tools能以更少的步骤生成同样美观的成果。

比如Slope过滤器可将斜坡设为不可绘制的区域。首先在地形的侧表面应用一层草地材质,然后使用Concavity过滤器设定特定弯曲度的土层不受影响。你可以禁用其他过滤器、单独应用某个过滤条件,或者在需要时合并多个过滤器。

软件包中还有额外的雕刻画笔,比如Erosion和Noise效果,在制作中善用这些工具可让地形呈现最佳的效果。

用茂密的植被覆盖地形

自2021.2以来,Unity Terrain可利用GPU的力量来渲染枝叶、实例化细节。这对草地、灌木等地形上密集的植被来说很实用。

Unity Terrain 湖

在该功能的帮助下,游戏将能在大部分PC上以远高于60帧的速度实例化上百万个细节。比如Demo场景就有超过5000万个三角形在几个不同角度的视图中被渲染。要想启用实例化,请选择编辑详细网格并勾选使用GPU实例化框。

图像

善用SpeedTree技术

Unity Terrain 森林
标题
用HDRP制作高度逼真的光线
Unity Terrain 山坡

类似草丛及其他低矮的植被都共享一个环境光探针,以提高渲染性能。这些对象如若无遮挡地接收天空光照往往会导致亮度过高。为此,我们选择使用一个单独的“baking sky”体积。这使我们能够降低用于生成环境探针的天空曝光率,降低草的光照强度,而不改变场景中天空的视觉外观。

从HDRP搬到URP

我们的目标是在两条可编程渲染管线中展示Terrain,这对整个团队来说是一次很好的学习机会。

正如我们所示,TerrainData资源可在HDRP和URP项目之间共享。我们先在HDRP项目中制作了整张Terrain,在铺设完材质和植被后将TerrainData资源导入了URP项目。通过将Terrain地块转换为Prefab,我们加快了向URP的集成过程。

两个项目的地形比例与分辨率设置完全相同,但HDRP采用了以高度为准的材质混合模式,而URP为了最大化图像保真度,默认采用阿尔法混合模式。况且,HDRP支持最多八个Terrain层级相互混合。

我们精心设置了两个项目中的光照和后处理,尽可能地利用起最新的渲染功能。在HDRP项目中应用了前边的体积云和程序化天空。这片程序化天空随后被烘焙成纹理,用作URP项目的HDRI天空。

两者的雾气效果处理方式各有不同。我们在HDRP中使用了体积雾来制作湖周围的低雾,但在URP中使用Visual Effect Graph制作了自定义粒子效果。

下方是两者所用功能的大概比较:

Unity Terrain对比表
最大化Unity Terrain项目性能

对实时3D互动体验来说,运行性能非常关键,为此我们采用了几种方法来改善性能。在HDRPURP中可用的Render Pipeline资产允许您为多个平台创建自定义设置。以URP项目为例,我们分别创建了高质量和低质量两种配置文件,仅在高质量配置下启用高清阴影贴图和HDR功能。这样,您可以通过质量设置轻松配置每个目标平台的设置,在项目设置窗口中。事实上,您可以直接在编辑器中切换和预览工作场景中的各种设置;只需从图形设置中交换Render Pipeline资产。

图像

除了性能相关的Project Level设置外,我们还优化了部分地形内容。例如在HDRP场景中,我们降低了远处地形块的分辨率,但此类优化只应在地形绘制完成后进行。否则,不同的分辨率会导致相邻地块的绘制结果出现不同。

当运行于低端平台时,密集的细节是最常见的性能杀手。这时,地形必须有更少的顶点数。在HDRP场景中,我们将细节密度设置为0.75,在摄像机所在的中心地块上将近处剔除距离设为了145米。你可以自行实验各种细节密度与剔除距离的参数组合,找出最适合的配置。此外,你可以调整树木的LOD距离,更早地应用LOD和Billboard展牌,取得一定的性能收益。

如果您使用URP并为不支持GPU实例化或硬件带宽非常有限的平台构建,您可以选择Vertex Lit模式来渲染Terrain细节。不同于实例化细节,该模式不支持阴影、双面渲染或alpha通道裁剪。

想要了解更多?有关其他性能优化技巧和窍门,请务必查看这篇博客文章和我们的Unite Now视频

即刻上手

要访问新的Unity Terrain Demo场景,适用于HDRPURP,请访问资源商店并将其直接导入您的Unity 2021.2项目。一旦您有机会充分探索这些场景,请在Worldbuilding论坛上告诉我们您的想法。

有关未来的更多信息,请访问Unity Roadmap

最后,Unity技术美术团队正在招贤纳士,您可以在我们的网站上查看开放的职位。我们期待听到您的声音!