Unity 2018.3将更新地形系统,此次更新涉及改进的工具和利用GPU实现的更高性能。它还添加了HDRP高清晰渲染管线和LWRP轻量级渲染管线的支持,同时兼容内置渲染管线和现有Unity地形系统。
请获取Unity 2018.3 Beta体验更新内容,但是需要注意:Unity 2018.3 Beta版仍处于开发阶段,新版本的用户界面和API可能会受到未来改动影响。
性能
在性能方面,我们为地形添加了GPU实例渲染路径。大多数情况下,实例化会大幅减少绘制调用。我们进行了大量测试都表明,它能减少50%以上的CPU消耗。
你可以在Terrain settings中勾选‘Draw Instanced’来使用新的渲染路径。
启用后,Unity会将所有大型地形数据,例如:高度图和Splat贴图等转换为GPU上的纹理。
我们可以使用GPU实例化功能来复制单个网格并采样高度图纹理来产生正确的几何体,而不必为CPU上的每个地形补丁块构建自定义网格。这会将减少地形的CPU工作负载降低不少数量级,因为一些实例化的绘制调用会替换大量潜在的自定义网格绘制。
它还能改进加载时间。我们不仅不用构建所有自定义网格,而且还能使用GPU来构建底图预混合的LOD纹理,GPU完成该任务的速度更快。这还意味着,如果你想开发自定义地形着色器,可以重写‘build basemap’着色器,生成匹配底图的LOD纹理。
地形效果
实例化也会改善地形法线的外观。我们可以通过将法线保存在由高度图生成的法线贴图纹理,并在像素着色器中进行采样,从而从几何体解耦地形网格法线。这意味着法线会独立于网格LOD层级。因此,你可以提高“像素误差率”来减少顶点消耗,得到更少的瑕疵。
对比旧版各顶点法线(左)和新版各顶点法线(右)
我们还为HDRP和LWRP开发了支持实例化渲染的地形着色器。HD着色器在改进后,支持各顶点法线和大量新功能,例如:高度和密度的混合模式、法线缩放、由纹理控制的表面金属和光滑度。HD地形着色器受限于单通道,但它支持在一个通道混合最多8个地形图层。
可编程GPU工具
在编辑器方面,我们公开了一个脚本API可用于构建自定义地形工具,以及一套实用函数,你可以使用它们在GPU上轻松实现无缝的交叉平铺雕刻和绘制操作。
新的TerrainAPI包含TerrainPaintTool和TerrainPaintUtility,前者是地形工具的基类,后者包含用于修改地形数据的实用函数。
通过这些改动,我们将现有地形工具转换为GPU操作。除了使这些工具速度更快,也为我们提供了笔刷大小,改进的笔刷预览,以及通过自动无缝拼接来绘制地形平铺边界的功能。
新的标记地形工具仍处于预览阶段,将于Unity 2018.3b 6推出
我们还开发了笔刷功能,例如:笔刷旋转,随机化。还有一些更高级的绘图工具,例如:高度图和网格标记,克隆笔刷等。这些绘图工具的功能还未在Unity 2018.3中提供,但将于不久后发布,敬请关注。
多地形支持
我们使处理多个地形平铺的过程更为简单。除了地形之间的无缝绘制,你还可以自动管理相邻地形间的连接。此前,开发者需要编写脚本来手动连接地形。
勾选Terrain Settings中的‘Auto connect’,地形会自动和相邻部分连接,使用相同的分组ID。
扩展现有地形时,你可以使用全新的‘Create Neighbor Terrain’工具来沿着空白边界快速添加匹配的地形平铺。
我们努力减小调整尺寸和修改分辨率所产生的影响。在Unity 2018.3中,当修改分辨率时,高度图和Splat图会重新采样,而不是像之前那样清除数据并丢失所有内容。我们还将在未来改进所有涉及调整大小的操作。
新资源类型
为了简化工作流程,我们还加入了二个与地形相关的全新资源类型:TerrainLayer和Brush。
1
TerrainLayer
TerrainLayer资源允许我们定义独立于地形对象的地形材质,从而能够轻松跟踪多个地形中相同材质的变化,这样能实现无缝绘制和材质修改。
我们扩展了TerrainLayer资源以支持“遮罩贴图”纹理,可用于任意着色目的,还扩展了脚本界面,为TerrainLayer资源提供与着色器相关的自定义GUI。
更多unity2018的功能介绍请到paws3d学习中心查找。