返回 登录
0

Unity 5.6 正式发布,都有哪些新功能?

北京时间 4 月 1 日,Unity Technologies 正式发布了最新版的 Unity 5.6 引擎,这也是 Unity 5.x 系列的最后一个版本。其中包括改进的 2D 功能、更好的图形性能、新的视频播放器、Progressive Lightmapper 预览版,新的光照模式,以及对 Facebook Gameroom 和 Google DayDream 平台的支持。自 GDC 2015 游戏开发者大会上面世至今,今天发布的 5.6 正式为 Unity 5.x 画上了句号。

接下来,一起看看最新的 Unity 5.6 为我们带来了哪些全新的功能特性。主要为:

Progressive Lightmapper(预览)

Unity 5.6 最值得注意的功能之一是基于路径追踪的新解决方案 Progressive Lightmapper。它使烘焙照明可以快速迭代,并可以预测大概结束时间。在 Unity 5.6 中,它将作为一个预览功能发布。

新灯光模式替换混合模式照明

灯光模式正在取代混合模式照明,这使得烘焙照明可以与实时照明相融合,包括烘焙和实时阴影。 Unity 5.6 提供了多种预设,以涵盖广泛的场景,包括完全实时 GI 照明,部分烘焙照明和完全烘焙的照明。同时,添加了烘焙阴影遮罩的能力,提供“超越实时阴影距离”的阴影。这大大减少了实时阴影距离,提高了性能。对远距离阴影与实时镜面高光的支持可以实现更高的视觉逼真度。已经为每个灯光类型和渲染路径添加了实时阴影淡出,并且从实时阴影转换到阴影遮罩是无缝的。

混合灯光模式:

  • 在间接烘焙模式下,混合灯光表现为实时动态灯光,并附加由烘焙光照贴图和光线探测器采样而来的间接照明。像雾这样的效果可以用于超越实时阴影距离。

  • 在 Shadowmask 模式下,混合灯光是实时的,静态对象投射的阴影被烘焙成阴影纹理和光线探测器。这种模式大大减少了渲染阴影投射物的数量,并仍能在远处产生阴影。然而,静态对象在动态对象上产生的阴影质量不是很高。

  • Distance Shadowmask 是一种混合模式,允许动态对象接收来自静态对象的高质量阴影,以及超越实时阴影距离的预计算阴影。为此,从静态对象投射的阴影在阴影遮罩纹理和光线探测器中进行预计算。然而,在阴影距离内,动态和静态对象都将使用实时阴影贴图进行渲染。距离之外的阴影将使用预计算阴影,两者之间平滑过渡。间接照明从预计算光照贴图和光线探测器采样。

  • 在 Subtractive 模式下,直接照明被烘焙到光照贴图中,因此静态对象将不会有来自混合光的镜面或光亮的高光。但是,动态对象将被实时照亮,并通过光线探测器从静态对象接收预计算的阴影。主定向光允许动态对象在静态对象上投射减色实时阴影。

同时,Unity 5.6 还重新设计了照明窗口以增强可用性,并添加了一个新的 Light Explorer 窗口,以简化照明艺术家的工作。

支持 Vulkan - 将图形性能提升到一个新的水平,并增加了移动设备的电池寿命

Vulkan 是新一代的图形和计算 API,可在台式机和移动平台上提供高效、跨平台的现代 GPU 功能。

它通过多线程并行来充分利用多个 CPU 内核,在使速度提高的同时,减少了驱动程序开销和 CPU 工作负载,使 CPU 可以更好地进行额外的计算或渲染。

Vulkan 的另一个优点是比使用 OpenGL ES 渲染相同内容的功耗更低。Vulkan 消耗的平均电量是 OpenGL ES 的 88-90%,因此可以增加“10-12%的额外播放时间”。

目前,Unity 5.6 已经在 Android、Windows 和 Linux 平台上添加了 Vulkan 支持,同时还增加了 Vulkan 对 OpenVR 的初步支持。

TextMesh Pro 即将集成到 Unity,免费使用

TextMesh Pro 使用签名距离字段(SDF)作为其主要的文本渲染管线,使得可以以任何点大小和分辨率清晰地渲染文本。使用一组利用 SDF 文本渲染功能的自定义着色器,TextMesh Pro 可以通过简单地更改材质属性来动态地更改文本的视觉外观。添加视觉风格,如扩张、轮廓、柔和阴影、斜面、纹理、发光等,并通过创建/使用材质预设来保存并调用这些视觉风格。

TextMesh Pro 提供对文本布局和格式设置的改进控制,使用户可以控制字符、字、行和段落间距,支持字距和基本连字,以及附加文本对齐模式,如对齐和刷新文本。超过 30 个富文本标签可用于让用户控制边距、缩进,用户可自定义样式、链接,甚至支持使用多个字体和图形与文本混合。

图形改进:实例化

Unity 5.6 还包括对图形各方面的大量改进,包括粒子系统和 GPU Instancing。

在 5.4 和 5.5 中引入的 GPU Instancing 允许用户在单个绘制调用中使用实例着色器绘制相同网格的许多实例,同时仍允许每个实例拥有各自的数据集,包括位置,旋转和颜色。当 GPU 成为限制游戏帧率的因素时,实例化可以提供显著的性能优势。

改进粒子系统

在 Unity 5.5 中,用户能为粒子添加自定义数据,而这些数据可以从脚本和着色器访问。在 5.6 中,这个系统得到了扩展。现在,用户可以在 Inspector 中直接配置数据,从而很容易地创建曲线和颜色应用在脚本和着色器中以驱动自定义逻辑。更进一步,本模块中定义的颜色还可以使用高动态范围。并且,Unity 5.6 还支持并行处理多个粒子系统,以改进工作流程。

为 Metal 添加 Compute Shader 支持

Unity 5.6 为 iOS 和 MacOS 添加了对 Metal Compute Shader 的支持。计算着色器由 HLSL 编写,就如 Unity 中的其他图形 API 一样,它们最终都会转换为 Metal Shading Language(目前仅限于 Metal v1.1)。

新的后期处理栈

新的后处理栈已发布,支持 Unity 5.6 及 5.5。用户可以从 Asset Store 免费获取新的 Post Processing Stack 插件包

它将一套完整的图像效果组合到一个后期流程中。这种做法的优点是:

效果顺序配置始终正确;
允许将许多效果合并到单个 pass;
具有基于资源的配置系统,便于预置管理;
所有效果在 UI 中分组在一起,用户体验更好。

它具有以下效果:

  • Antialiasing(抗锯齿,FXAA、Temporal AA)
  • Ambient Occlusion(环境光遮蔽)
  • Screen Space Reflections(屏幕空间反射)
  • Fog(烟雾)
  • Depth of Field(景深)
  • Motion Blur(运动模糊)
  • Eye Adaptation(眼适应)
  • Bloom(虚化)
  • Color Grading(颜色分级)
  • User Lut(摄影表)
  • Chromatic Aberration(色差)
  • Grain(粒度)
  • Vignette(晕影)
  • Dithering(抖动)

该工具还包括一组监视器和调试视图,可以帮助用户正确设置效果并调试输出中的问题。

具有 4k 视频播放能力的新视频播放器

Unity 5.6 包含一个全新的视频播放器,全新架构平切添加了硬件加速。即使是普通的手持设备,现在也可以播放支持 Alpha 通道的高分辨率 4K 视频。它支持目前被广泛使用的 H.264 / AAC 编解码器,在无法使用 H.264 / AAC 的情况下则会使用 VP8 / Vorbis。

NavMesh:改进的寻路和 AI

Unity 5.6 引入了底层 API,旨在解决以前版本的限制。这些改进为角色和 AI 导航提供了一整套新的用例和游戏选项。此外,底层 API 还提供四种新的易于使用的组件,这些组件已在 Github 开源

能将 Unity 的 NavMesh 功能应用到动态生成或动态加载的内容上是开发者呼声最高的功能。 利用 5.6 中的新功能,这不仅成为可能,而且简单高效。只需加载或生成场景,然后让 NavMesh 进行烘焙即可。

2D 物理改进和功能

对于 2D 物理引擎,内部 2D 碰撞处理系统已经被完全重写,可提供更强大和可靠的碰撞测试,确保在所有条件下都能正确的获得 Enter、Stay 和 Exit 回调状态。

在 2D 物理引擎 API 的众多改进之中,几个特性脱颖而出:

  • 能够检索 Rigidbody2D 或 Collider2D 的所有碰撞结果,可以返回完整的碰撞详细信息或只返回碰撞中的 Collider2D。
  • 添加了一个名为 ContactFilter2D 的新类型,可用于所有物理查询。 这允许通过层掩码、碰撞法线角度、Collider2D Z 深度等快速过滤结果,以及现在接受新的 ContactFilter2D 的新的非分配重载,如 Linecast,Raycast,BoxCast, CircleCast,CapsuleCast,OverlapPoint,OverlapCircle,OverlapBox,OverlapArea,OverlapCapsule,GetContacts&IsTouching。 用于过滤的示例用法包括:询问玩家是否沿特定方向触摸特定图层; 如果 Collider2D 区域在特定层上有任何接触,或者 Rigidbody2D 在特定方向上有任何接触。
  • 检索所有 Collider2D 与其他 Collider2D 重叠的能力,并附加到特定的 Rigidbody2D,或使用新的 OverlapCollider 功能重叠特定的 Collider2D。
  • 检索当前连接到 Rigidbody2D 的所有 Collider2D 的能力。

可视化调试物理

有时可能难以判断场景中的哪些对象应该或者不应该碰撞,特别是当渲染和碰撞网格不同步时。 为了帮助用户快速检查场景中的碰撞几何体,Unity 5.6 添加了物理碰撞的调试视图模式。它旨在为用户提供一个在 Unity 场景中快速找到与碰撞相对应的碰撞体。它也可以作为一个分析工具,因为它可以隐藏所有不被使用的 Rigidbodies,以及显示所有凹面网格的 MeshColliders。

物理引擎的反穿透方法和改进的编辑器 UI

Unity 5.6 添加了两个新的方法:Physics.ComputePenetrationPhysics.ClosestPoint,以帮助编写自定义的反穿透方法。这对创建自定义角色控制器以及需要额外控制如何对周围的碰撞体做出反馈的游戏代码很有帮助。

目前场景中有一个正在移动的球体和一个静止不动的胶囊。球体在与胶囊重叠的情况下,沿着胶囊转动。在球体中心有一条红色的光线,显示球体需要翻转的方向和距离,以便与胶囊完全分离。

此外,Unity 5.6 还统一了在场景视图中编辑原始 2D 和 3D Colliders 的交互式手柄。 他们现在都使用相同的逻辑并支持新的修改键(Shift 和 Alt),使编辑碰撞体的尺寸,将中心固定到位,或者从任何方向均匀地缩放形状变得容易。

同时,添加了 TreeView IMGUI 控件,可以显示展开和折叠的分层数据。用户可以使用 TreeView 为编辑器窗口创建高度可定制的列表视图和多列表,可以与其他 IMGUI 控件和组件一起使用,或自定义行内容渲染、拖动逻辑、选择逻辑、搜索、排序和重命名项目。

Unity 5.6 改进了为每个 UI 元素发送到 GPU 的数据量,向 Canvas 添加了一个新的“AdditionalShaderProperties”。 这会更改创建的所有新 Canvas 组件的默认行为,并减少渲染画布的内存成本,因为排除了其他未使用的通道。

如果您正在使用 Visual Studio 2017,您会注意到,现在可以自动检测带有 Unity 工作负载的安装,并显示并添加到“外部脚本编辑器”列表中。

Google Daydream&Cardboard VR 支持

5.6 原生支持 iOS 和 Android 版本的 Google Cardboard VR,和支持 Android 上 Google Daydream VR 平台。为了从 Daydream 平台获得最佳性能和延迟,Unity 与 Google VR NDK 集成,以利用该平台的异步重放和 VR 性能模式。

与 Google I/O 发布的 Google VR SDK for Unity 中的 Daydream 支持相比,Unity 5.6 现在提供了一个更简化的工作流程,进行了显著的优化和减少了延迟。无需添加任何预制体,脚本或修改 manifest 文件即可开始使用——只需启用 VR 并将 Daydream 添加为目标平台,就可以开始制作自己的虚拟世界。

同时,Unity 5.6 支持轻松地切换和退出 VR 模式,以便应用程序可以轻松扩展到完整的 Google VR 受众群体,并原生支持 Google Cardboard,针对 Cardboard 的应用程序可以在较老的设备上运行。目前,Cardboard 的支持是专门针对 Android 的,iOS Cardboard 支持即将推出。

支持 Facebook Gameroom

通过 Gameroom,Facebook 为开发人员提供了一种更轻松的方法,将高质量的游戏带入 PC,并且让游戏可以充分利用 PC 的 CPU 和 GPU 的能力。开发者现在可以将自己的项目作为原生 Windows 应用发布到 Facebook Gameroom,或者使用 Unity 的 WebGL 支持发布到 Facebook.com。

WebAssembly 的实验性支持

WebAssembly 是一种新的跨浏览器技术,旨在帮助改进 Unity WebGL 体验。尽管从技术上将其定义为一种新的独立的标准,但从 Unity 的角度来看,WebAssembly 本质上是 asm.js JavaScript 子集的字节码格式(asm.js 用于将 Unity 代码部署到 WebGL)。与当前使用的基于文本的表示相比,字节码格式显著地减少了编译为 asm.js 代码的大小。这将使代码下载更快,更重要的是,能够更快地解析和编译代码,使用更少的内存。这将改善大型已编译 JavaScript 代码库的启动时间,并减少其内存需求——这两个都是开发者在 WebGL 平台面临的常见问题。

改进 Unity Multiplayer 多人联网

Unity 5.6 包含对现有 Unity Multiplayer 功能的优化和稳定性的改进。值得注意的是,在不太可靠的网络条件下运行时,Unity 已经提高了稳定性。大多数更改是透明的,不会影响已有游戏所用的网络 API 的实现。

除了与编辑器相关的修改之外,Unity 还对 Multiplayer 文档进行了改进,制作了一些新的学习材质,并开始了新功能的基础工作。

更多 Unity 5.6 新功能与亮点,可查阅:http://forum.china.unity3d.com/thread-23381-1-1.html

Unity 5.6 宣告 Unity 5.x 周期结束,那么,Unity 2017 将有哪些新功能?更多 Unity 引擎精彩内容与绝密技巧,尽在 Unite 2017 Shanghai:http://unite2017.csdn.net/

评论