2018.3地形更新:上手使用

CHRIS TCHOU / UNITY TECHNOLOGIESContributor
Oct 10, 2018|5 Min
2018.3地形更新:上手使用
为方便起见,此网页已进行机器翻译。我们无法保证翻译内容的准确性或可靠性。如果您对翻译内容的准确性有疑问,请参阅此网页的官方英文版本。

我们现在有一个致力于地形的团队,我们的初步努力很快就会向公众开放!Unity 2018.3 将附带地形系统的更新。此更新通过更好地利用 GPU 改进了工具和性能。它还增加了对 HDLW渲染管道的支持,同时向后兼容内置渲染管道和现有的 Unity Terrain 系统。

立即获取 Unity 2018.3 测试版 以获取早期更新!请注意,由于测试版仍处于积极开发中,因此用户界面和 API 仍可能发生变化。

表现

在性能方面,我们为地形添加了 GPU 实例渲染路径。在大多数情况下,实例化会大幅减少发出的绘制调用次数。在我们的许多测试中,CPU 成本降低了 50% 以上(当然,实际数字取决于您的平台和用例)。您可以通过在地形设置中启用“绘制实例”来选择这个新的渲染路径:

图像

启用后,Unity 会将所有重地形数据(如高度图和飞溅图)转换为 GPU 上的纹理。我们不需要在 CPU 上为每个地形补丁构建自定义网格,而是可以使用 GPU 实例来复制单个网格并对高度图纹理进行采样以生成正确的几何图形。这可以将地形 CPU 工作负载降低几个数量级,因为一些实例绘制调用可能取代了数千个自定义网格绘制。

作为一个很好的副作用,它还改善了我们的加载时间!我们不仅可以跳过构建所有自定义网格的步骤,还可以使用 GPU 来构建底图(预混合 LOD 纹理);GPU 在这方面的速度要快得多。这也意味着,如果您有自己的自定义地形着色器,您现在可以覆盖“构建底图”着色器并生成匹配的底图 LOD 纹理。

地形视觉效果

实例化还改善了地形法线的外观;我们将地形网格法线与几何体分离,方法是将它们存储在由高度图生成并在像素着色器中采样的法线贴图纹理中。这意味着法线与网格 LOD 级别无关。因此,您可以增加“像素错误率”以降低顶点成本,并减少伪影。

图像

我们还为 HD 和 LW 渲染管道开发了地形着色器,可在软件包版本 4.0.0 或更高版本中使用,支持实例渲染和每像素法线。高清着色器得到进一步增强,支持高度和密度混合模式、法线缩放、纹理控制表面金属度和平滑度等新功能。 高清地形着色器仅限于单次传递,但它支持在一次传递中混合最多 8 个地形层。

可编写脚本的 GPU 工具

在编辑器方面,我们公开了一个脚本 API,用于构建您自己的自定义地形工具,以及一套实用函数,您可以使用它们轻松地在 GPU 上实现无缝跨图块雕刻和绘画操作。新的 TerrainAPI 包括 TerrainPaintTool<T0>(地形工具的基类)和 TerrainPaintUtility(包含用于修改地形数据的实用函数)。

应用这些变化,我们将所有现有的地形工具转换为 GPU 操作。除了使这些工具的速度更快之外,这还为我们提供了更大的画笔尺寸,改进的画笔预览,以及通过自动接缝缝合跨越地形图块边界进行绘画的能力。

图像

我们还开始尝试画笔功能,例如画笔旋转和随机化以及更高级的绘画工具,例如高度图和网格冲压、克隆画笔等。 这些绘画工具功能目前不在 2018.3 中,但我们通过 GitHub Terrain Tools 项目提供它们。

多地形支持
图像

我们使得处理多个地形图块变得更容易。除了地形之间的无缝绘画之外,您现在还可以自动管理相邻地形之间的连接。以前,这需要编写脚本来手动连接邻居。

在“地形设置”中启用“自动连接”,地形将自动连接到具有相同分组 ID 的邻居。

扩展现有地形时,您可以使用我们新的“创建邻近地形”工具沿空边界快速添加匹配的地形图块。

图像

我们还致力于使调整大小和分辨率更改的破坏性更小。在 2018.3 中,当您更改高度图和 splat 图的分辨率时,它们将重新采样,而不是像以前那样清除数据并丢失所有工作。我们正在致力于在不久的将来改进所有调整大小的操作。

新资产类型

为了简化工作流程,我们还创建了两种新的地形相关资产类型:TerrainLayer 资产和 Brush 资产。

图像

TerrainLayer 让我们可以定义独立于地形对象的地形材质,以便我们可以轻松地在多个地形上追踪相同的材质。这有助于无缝绘画和材料修改。我们还扩展了 TerrainLayer 资源以支持“遮罩图”纹理,可用于任意着色目的,以及脚本接口,为 TerrainLayer 资源提供依赖于着色器的自定义 GUI。

图像

画笔代表绘画和雕刻工具使用的 GPU 画笔形状。它们现在由纹理和径向衰减曲线定义。这使得创建和调整画笔形状变得更加容易(以前需要将精心制作的图像文件放入专门命名的文件夹中)。

我们还为 Unity 添加了对 R16 纹理格式(单通道 16 位格式)的支持。这使得我们避免对画笔形状进行 8 位量化,如果用作高度图图章,可能会导致不良的“梯田”效果。

图像

我们的地形团队才刚刚起步,开发工作仍在继续。请在 世界建筑 论坛中向我们发送反馈!