本文首发于洪流学堂微信公众号。
洪流学堂,学Unity快人几步
Unity2018.3已经正式发布,快来看看有什么变化吧!
嵌套Prefab
这是Unity2018.3最重大的更新。
改进的的Prefab系统可以让你对Prefab进行嵌套,同时改进的Prefab工作流可以让你更好地制作、编辑以及在运行时动态生成Prefab,大幅提高了Prefab的灵活性,提高了你的开发效率。
之前我们已经发布过新Prefab系统的教程,如果你还没有看过的话,快去看看吧!
[Unity2018.3新功能]Prefab嵌套和变体
[Unity2018.3新功能]新Prefab系统的其他变化
Prefab新系统的全部教程也已经发布在专栏中(131-135),大家可以前往学习。
新的设置窗口
Unity2018.3为工程设置(Project Settings)和首选项(Preferences)增加了一个独立的窗口,这个新窗口可以随意停靠、也可以搜索。再也不用烦恼点一下,设置窗口就没了。
Cinematics
Timeline
2018.3大幅优化了Timeline的Animation Track处理transform根节点的动画。
新的轨道偏移模式
这些模式在Timeline中可以准确地指示角色应该从哪开始播放动画。在2018.3之前,起始位置取决于animator的状态。现在,该轨道提供了Auto模式的附加选项,以实现向后兼容。
自适应缩放
如果设置了Animator的“Apply Root Motion”,Timeline现在会将Scale应用于根变换上的动画。这使得Timeline资产在不同的GameObject之间更加可重用,并有助于消除滑步和其他不自然的效果。
不再需要Root Motion
在2018.3之前,对于动画位置和旋转的根变换剪辑,动画剪辑需要生成根运动曲线来应用根变换。这不再是必需的,这意味着动画位置和旋转的所有剪辑都能和Timeline一起使用,除了Legacy的clip。
改进的编辑器预览
改进了编辑器中的Timeline预览。使用场景偏移时,场景位置会当作偏移。会应用渐入渐出效果来混合场景位置。
Cinemachine
Cinemachine添加了物理相机支持,一个事件映射器和一个带有交互式显示的新程序噪波编辑器。
世界建造
今年早些时候,ProBuilder 3D建模和关卡设计工具成为Unity的一部分,现在4.0版带来了重大更新。它侧重稳定性和错误修复,也包括几个新功能和重要更改。
最重要的是,ProBuilder 4.0现在使用源代码分发,并引入了一个新改进的公共API,为开发人员提供了更多的选项,可以在编辑器和运行时进行自定义。此更新还增加了对新嵌套Prefab工作流程、性能改进和可视升级的支持。
更多关于ProBuilder 4.0的信息:https://forum.unity.com/threads/probuilder-and-2019-1-alpha-7.579385/#post-3864445
地形更新
Unity 2018.3包含对Terrain系统的更新,重点关注性能和可用性。
包括了改进的工具和性能优化,可以更好地利用GPU。还增加了对HDRP和LWRP流水线的支持,同时向后兼容内置渲染管道和现有的Unity Terrain系统。
性能
在性能方面,Terrain添加了一个GPU-instanced渲染路径。在大多数情况下,实例化会使draw call数量大幅减少。许多测试都看到CPU占用降低了50%以上(实际数字取决于平台和具体用法)。
可编写脚本的GPU工具
在编辑器方面,地形系统公开了一个脚本API,用于构建自定义Terrain工具。以及一组工具函数,可以用它们在GPU上轻松实现无缝的交叉拼接雕刻和绘制操作。
所有现有的Terrain工具转换为了GPU操作。除了使这些工具更快,也提供了更大的画笔尺寸,改进的画笔预览,以及在Terrain边缘绘制时的自动缝合拼接能力。
多地形支持
使用多个Terrain块会更容易。除了Terrain之间的无缝绘制,现在可以自动管理相邻Terrain之间的连接。以前,这需要编写脚本来手动连接。
扩展现有Terrain时,可以使用新的“Create Neighbor Terrain”工具在边缘的空地快速添加Terrain块。
新资产类型和工具
新的地形工具和画笔资产包括高度图,网格标记和克隆笔刷。这些绘画工具目前尚未包含在2018.3中,但可以通过GitHub Terrain Tools 工程(https://github.com/Unity-Technologies/TerrainToolSamples)获取它们。
还有两种新的Terrain相关资产类型可以简化地形工作流程:TerrainLayer Asset和Brush Asset。TerrainLayer可以独立于Terrain对象定义Terrain材质,以便跨多个Terrain对象使用相同的材质。这有助于无缝绘制,修改材质更容易。
Brush表示绘画和雕刻工具使用的GPU画笔形状。它们现在由纹理和径向衰减曲线定义,这使得创建和调整画笔形状更加容易。
地形还增加了对R16纹理格式(单通道16位格式)的支持。这可以避免画笔形状进行8位量化,如果用作高度图绘制,这会导致“梯田”效果。
包管理器Package Manager更新
包管理器可以让你通过动态加载和更新Unity开发的功能,各种项目可以快速访问新的Unity功能。
随着更多Unity功能编程Package格式,Unity正在稳步改进用户体验(UX),以便更轻松地发现可用的包和更新,以及管理项目中安装的包。
包管理器中添加了大量改进,包括更好的UI,指示软件包标签的状态,停靠窗口的功能以及对文档和更改列表的轻松访问。现在还可以按名称搜索包,还可以手动添加自定义的包。
UnityHub更新
今年9月推出了Unity Hub 1.0,这是新推出的桌面应用程序,旨在一站式管理Unity项目,许可证,编辑器安装和附加组件,简化安装和开发流程。新的Hub v1.2版本包括通过Unity下载归档(https://unity3d.com/get-unity/download/archive) URL 直接在Hub中下载和安装旧版Unity Editor版本的功能。依赖特定(较旧)版本的编辑器的用户现在只需单击一下即可轻松地从Hub访问它们。
随着更多功能和更新作为Packages分发,新的**Package Project Updater **将通过Hub简化升级过程。这有助于确保在将项目从先前的Unity版本迁移到较新版本时,项目包,脚本和项目库是兼容的。
升级时还提供了包更新日志文件以帮助进行调试,因此你可以跟踪每个受影响的项目级别的迁移状态。
引擎更新
Visual Studio Code的Unity调试器扩展
Unity更新了Visual Studio Code的调试器扩展,Visual Studio Code是一个开源的代码优化编辑器,可在macOS,Windows和Linux上使用。调试器扩展支持C#脚本在一个轻量级的环境调试,最新的2.x版增加了各种改进,包括Mono 4.x的脚本运行时支持。如果需要使用,请按照Visual Studio Code站点上的设置说明进行操作(https://code.visualstudio.com/docs/other/unity)。
如果你正在寻找更集成且功能丰富的C#编辑和调试环境,那么还有Visual Studio和Visual Studio for Mac可以选择。
物理
PhysX 3.4
2018.3从NVIDIA PhysX 3.3升级到3.4。这个升级使光线投射,形状扫描和网格烹饪等运算速度加倍。它还改进了对快速旋转物体碰撞检测的支持,并增加了确定性,确保在所有输入完全相同时获得相同的模拟结果。
此次升级还扩展了C# Job系统中PhysX提供的功能。允许在非主线程中欧冠异步使用大多数碰撞器类型,从而可以显著提高多核硬件的性能。PhysX 3.4升级还提供了稳定性和性能方面的改进。最后,支持多个世界和C# Job查询。
多场景物理
现在可以创建多个物理场景(而不是只有一个填充了所有物体和碰撞器的场景)。扩展链接:https://blogs.unity3d.com/2018/11/12/physics-changes-in-unity-2018-3-beta/
垃圾回收控制
添加了一个新的UnityEngine.Scripting.GarbageCollector脚本API(https://docs.unity3d.com/2018.3/Documentation/ScriptReference/Scripting.GarbageCollector.html),用于运行时在Mono和IL2CP脚本后端上全局启用和禁用垃圾收集。如果你手动仔细管理内存并且在运行时很少或没有分配,则可以通过禁用它来避免垃圾收集器开销。然后,当你可以负担开销并调用System.GC.Collect()以强制它收集垃圾时,可以再次启用它。换句话说,你可以控制它何时发生,而不是随机发生垃圾回收。
新的.NET运行时
现在默认的脚本运行时是.NET 4.x。旧的.NET 3.5运行时已经被弃用并会在不久被移除。
这个.NET运行时的升级会带来什么呢?现在你可以用C# 7.3的语法了!那么C# 7.3的语法有什么呢?这个在我们之前的文章中也帮大家做了总结哦,来复习一下吧!
Unity运行时更新带来了什么?
[Unity脚本运行时更新]C#4新特性
[Unity脚本运行时更新]C#5新特性
[Unity脚本运行时更新]C#6新特性
[Unity脚本运行时更新]C#7新特性
[Unity脚本运行时更新]C#7.1新特性
[Unity脚本运行时更新]C#7.2新特性
[Unity脚本运行时更新]C#7.3新特性
代码大小
Unity在所有平台播放器设置中标准化了托管代码剥离功能。“剥离级别”选项已替换为新的“托管剥离级别”选项。此新选项适用于所有平台以及Mono和IL2CPP脚本后端。
为了帮助你尽可能减少游戏包大小,Unity引入了两个新的Managed Stripping Level选项:Medium和High。这些新选项仅在面向.NET 4.x脚本运行时时可用。
通过对IL2CPP进行托管代码剥离改进和大小改进,针对.NET 4.x运行时的构建将在大小上与旧的.NET 2.0运行时相当。
运行时API,用于重新压缩下载的资产包
AssetBundles包含了可在运行时加载的特定于平台的资产(例如,模型,纹理,Prefab,音频剪辑甚至整个场景)的存档文件。它们可以减少可下载内容(DLC)的初始安装大小,确保资产针对最终用户的平台进行优化,并降低运行时内存压力。
在2018.3中,Unity提供了一个API,允许你创建和管理自己的资产包缓存系统。你仍然可以向客户端提供LZMA压缩包,然后客户端可以将它们重新压缩为更适合运行时的格式(LZ4),就像Unity的本机/内置资产包缓存系统一样。
导航系统更新
NavMesh Surface组件表示特定NavMesh Agent类型的可行走区域,并定义应构建NavMesh的场景部分。自2018.3起,导航系统将使Prefabs中的NavMeshSurfaces在Prefab模式下独立烘焙。如果要跟踪直线路径或在NavMesh上找到两个位置之间的障碍物,现在还可以在作业中调用NavMeshQuery.Raycast方法。
资产上传流程
在2018.3之前,AUP仅处理纹理。在2018.3中,AUP现在加载纹理和网格,但也有一些例外。启用读/写的纹理或读/写启用或压缩的网格将不使用AUP。请注意,2018.2中引入的Texture Mipmap Streaming也使用AUP。更多内容:https://blogs.unity3d.com/2018/10/08/optimizing-loading-performance-understanding-the-async-upload-pipeline/
Memory Profiler
内存消耗是关键性能指标,对于内存资源有限的平台(如低端移动设备)尤为重要。
虽然Unity具有良好的性能工具,但缺乏解决内存相关问题的工具。找到泄漏的内存、最大的内存分配,或只是看下内存分配都并不简单。
考虑到这一点,Unity希望让你更容易理解项目中内存的变化。使用新的Memory Profiler,你将能够深入了解每个分配的详细信息。
你可以使用它来捕获快照,分解本机和托管内存使用情况,并最终做出有关优化内存使用情况的更好决策。适用于C#和C++内存,不同分配之间的关系,Unity内部分配以及可以在低内存设备使用。
最后,你还可以比较快照之间的差异以识别内存泄漏。Memory Profiler第一个版本作为预览版提供,并将不断更新。
2D功能
2D等距Tilemap
你现在可以在2018.3中基于等距网格布局轻松创建高性能2D环境。你可以选择两种类型的等距Tilemaps:常规等距Tilemaps或Z作为Y Tilemaps。选择Z作为Y Tilemaps允许你在同一个图块上绘制不同高度的不同图块。例如,你可以使用它来绘制具有不同楼层的高层建筑或树木或塔楼等高大的物体。
你还可以选择分组切片以进行渲染或单独渲染它们。将切片分组一起渲染(块模式)可以优化性能。但是,如果你希望GameObjects在切片前后移动,则可以单独渲染每个切片。
Github上也提供了一些额外的工具:https://github.com/Unity-Technologies/2d-extras
2D动画v2
新版2D动画系统带来了新的工作流程,并对骨骼绑定过程进行了更详细的控制。
多精灵:创建角色时,请确保每个肢体或角色的一部分位于不同的层中。然后将文件导出为PSB并将资产导入Unity。使用新的2D PSDImporter package,Unity会自动生成一个spritesheet。
新的蒙皮编辑器:使用这个新的编辑器窗口比以前更精确地定义子画面的网格细分和变形,并且还有UI / UX改进。
2D动画包v2和2D PSDImporter将很快在包管理器中提供。
Animation
Animator添加了一些改进,包括在运行时无内存申请,以及对作业进行批处理,从而使性能提高了10-20%。
粒子系统
Unity 2018.3为Unity的粒子系统提供了许多改进和功能。
Set / GetParticles with offset
这个脚本API已经改进,现在可以使用名为offset的可选参数。它允许你仅获取或设置整个粒子阵列的子区域。
Particle Lights现在支持实时全局照明
当通过灯光模块发射光源时,灯光现在可以为场景的实时全局照明做出贡献。只需配置Light Prefab,就能像其他任何全局照明的光一样为场景贡献光照。
翻转粒子系统网格
现在可以使用翻转选项来翻转粒子网格,而不仅仅是广告牌。Unity还将Flip U / V选项移出Texture Sheet Animation模块并进入Renderer模块。
有序网格形状发射
类似于程序形状支持非随机发射,网格现在可以以可预测的顺序产生粒子。对于诸如圆形的程序形状,粒子围绕形状的边缘递增地生成。对于网格,应用相同的原理,但网格中顶点(或面)的顺序决定了顺序。
禁用滚动(VR)
在Renderer模块中添加了一个新的复选框,可以阻止面向摄像机的粒子与相机一起滚动。这对于VR应用程序尤其有用,在这些应用程序中,如果没有此功能,当用户倾斜头部时,粒子可能看起来很奇怪。
突发概率
现在可以定义突发不会触发的随机可能性,以便创建更多不可预测的粒子突发。
粒子标准着色器是新的默认值
在Unity 2018.3中创建新的粒子系统时,默认情况下将设置Unlit Particle Standard Shader。所有旧着色器都已移至Legacy菜单。
Ringbuffer模式
新的Ringbuffer模式可以更容易地创建持久效果,如脚印或弹孔,通过在生命周期到期后保持粒子可见,直到它们被替换。在这种新模式下,可以根据需要使用两种循环模式配置粒子,这样可以创建例如发光余烬的效果,在粒子被替换之前会持续动画,同时保持整体性能预算。
新Texture Sheet动画模式
Unity 2018.3为Texture Sheet Animation模块带来了两种新模式。第一种模式以每秒帧数为单位播放动画。第二种模式基于粒子速度,并根据每个粒子的移动速度从动画中拾取帧。
外力模块升级
Unity在Unity 2018.3中刷新了外力模块。它附带了一个新的组件,ParticleSystemForceField,它可以与粒子系统交互,以对粒子施加各种力。
阴影Bias
粒子广告牌,线条和拖尾都容易受到自阴影问题的困扰,因为它们使用2D面向摄像机的几何体来伪造3D物体。为了解决这个问题,每个组件都有新的阴影偏置选项,允许你稍微移动阴影远离对象以防止不正确的自阴影。
Sub-Emitter Ratio属性
Unity中的子发射器现在有一个名为Ratio的新属性,它确定子发射器事件发射的可能性。值为1可确保子发射器在触发时触发,值为0表示永远不会触发。使用0到1之间的值可以为子发射器事件分配随机概率。
剔除
Unity 2018.3引入了一种控制粒子系统在屏幕外时会发生什么的方法。在以前的版本中自动决定是暂停还是继续模拟粒子系统,这有时会导致性能峰值或浪费性能模拟屏幕外效果。新的剔除模式选项可让你控制并做出更好的决策。
非等比缩放
修复了一些错误,这些错误阻止了非等比缩放按预期工作。现在可以使用局部或世界空间对齐粒子的非等比缩放,并获得可预测的结果。
遗留粒子系统移除
为了专注于开发新功能,Unity删除了遗留粒子系统的代码。
平台
移动平台
Unity在2018.3对移动设备做了一些改进,包括以下内容。
Android App Bundles
Android App Bundle是Google Play的新上传格式,包含游戏的所有已编译代码和资源,但推迟了到Google Play的APK生成和签名。Google Play的新应用服务模式称为动态传递,然后使用你的应用包基于每个用户的设备配置生成并优化APK,因此他们只下载运行你的应用所需的代码和资源。你不再需要构建,签名和管理多个APK来支持不同的设备,用户可以获得更小,更优化的下载。
移动端的动态分辨率(iOS / Android - Vulkan)
在2018.3中为iOS / tvOS(Metal)和Android(Vulkan)添加,动态分辨率是指动态缩放部分或全部渲染目标,以减少GPU上的工作负载。当性能数据表明游戏由于受GPU限制而即将降低其帧速率时,它可以自动触发。在这种情况下,逐渐缩小分辨率有助于保持稳定的帧速率。如果用户即将体验特别是GPU密集型游戏玩法部分,也可以手动触发它。如果逐渐缩放,动态分辨率几乎不会引起注意。
Android运行时权限
在Android 6(API级别23)及更高版本上,Android.Permission API允许你在需要时请求使用系统功能(如摄像头,麦克风或位置)的权限,而不是在应用程序启动时。你可以检查是否已授予权限,并在Android系统权限对话框出现之前显示一条消息,显示你询问的原因。
OpenJDK与Unity一起安装
默认情况下,Unity现在安装基于OpenJDK的Java Development Kit ,确保你始终获得正确的JDK版本。
控制台
适用于Xbox One的DirectX 12
对于2018.3,Unity的DirectX 12支持即将推出Xbox One。
DirectX 12是一种新的图形API,可以减少驱动程序开销并允许更好地使用多核系统。根据游戏的不同,DX12可以看到一些令人印象深刻的性能提升。例如,通过Unity的Book of the Dead演示,实现了帧率提升8.72%。
XR
对Daydream控制器的本地支持
此更新通过输入管理器添加了对Daydream控制器跟踪和按钮输入的本地支持。更多信息:https://blogs.unity3d.com/2018/11/22/multi-platform-vr-features-in-2018-3/
用于VR控制器的触觉API
现在提供用于在Windows混合现实耳机控制器上触发触觉的API,通过OpenVR 触发Vive控制器和Oculus Touch控制器。Unity将继续扩展平台支持并在将来的版本中创建更多功能抽象。
AR Foundation的更新
Unity最近对AR Foundation和其他XR包进行了重大更新。首先,通过使用ARCore上的Lightweight Render Pipeline和使用AR Foundation构建的ARKit应用程序,你可以获得更多的渲染控制。第二个新功能是一组优化的摄像机图像API,可让你高效地访问CPU上的摄像机图像。对于希望对自定义计算机视觉算法等事物进行自己的图像处理的开发人员来说,这是理想的选择。最后,Unity已经实现了对ARKit的ARWorldMap功能的支持,以共享会话信息。
XR性能测试
最近添加了GitHub库来帮助你测试XR项目。该自动化测试包中包含的功能,性能和其他类型的为你统一XR开发自动化测试。你可以使用Acceptance Tests项目来验证Unity配置的行为,比较Unity版本之间的功能,以及测试性能变化。
TextMesh Pro
TextMesh Pro现在是2018.3的验证包。它附带了一个新的高度优化的字体生成器,可以在运行时生成字形。它被称为混合动态字体系统,它允许你在同一个项目中组合静态和动态字体资源。
DCC
FBX Exporter
FBX Exporter于2017年推出,现已成为Unity Package Manager 2018.3中提供的经过验证的软件包。你可以使用它将几何图形发送到任何支持FBX的应用程序,并且只需很少的工作就可以再次返回。
物理相机
在现有Unity相机系统的基础上,现在可以使用第二种真实相机模式。新模式基于焦距和传感器尺寸,而不是垂直视场控制,这使得电影摄影师和艺术家习惯使用物理相机更加自然。它还支持更自然的镜头效果,如渐晕,色差和耀斑。
SRP中的Autodesk Interactive Shader支持
使用Shader Graph创建“Autodesk Interactive”着色器资源以支持先前的roughness setup(请注意,Autodesk Interactive Shader以前称为Autodesk Maya和Autodesk 3ds Max中的Stingray PBS着色器)。
图像
Visual Effect Graph(预览)
新视觉效果图作为预览版可在2018.3的HDRP中使用预览中使用。使用它来创作可配置的,可重复使用的次时代效果。从简单到复杂,可以在GPU上处理数百万个粒子。这款易于使用,灵活的基于节点的系统受到电影中VFX领先工具的启发,可让你快速为游戏和其他创意内容创建出色的效果。
你可以拖放现成的节点以获得简单的效果,也可以使用它来创建更高级的效果。它还具有响应性,允许你在工作时实时查看所有更改。
Visual Effect Graph架构使你可以在GPU上生成数百万个粒子,而不会影响性能。
每个资产都包含一个图,其中包含效果的所有行为。效果可以包括网格,粒子和其他模拟容器的任意组合,所有这些都由Visual Effect Graph处理,它也可以与Timeline等其他工具集成。
Visual Effect Graph目前支持HDRP,LWRP支持将在明年晚些时候推出。
照明改进
2018.3为灯光引入了可配置衰减。对CPU和GPU渐进式光照贴图的这一更改意味着即使你没有使用Scriptable Render Pipeline,也可以通过脚本配置烘焙灯,以使用物理上正确的“反平方衰减”。结果是烘焙的灯光将更加类似于现实世界的照明,有明亮的热点和漫长的、缓慢衰减的衰减。这意味着更逼真的照明,并提高光照贴图场景的整体可信度。
此外还实现了Light Probe Deringing。你可以在Light Probe Group上切换以在探针上实现开口。开口可以减轻负值和条带(与光探针使用的球谐函数相关的常见采样问题)。
2018.3中的CPU和GPU渐进式光照贴图中可以使用圆形区域灯。此区域灯光形状在建筑可视化和其他可能需要添加圆形光孔的应用中非常有用。对于这些情况,矩形灯形状不适合。圆形灯也提供了其他有趣的特征,例如较小的热点和朝向光线边缘的较软的半影,这是照明艺术家工具包的另一个有用的补充。
GPU Progressive Lightmapper(Windows预览版)
2018.3在Windows预览版中引入了GPU Progressive Lightmapper。在具有强大GPU的机器上,使用GPU Progressive Lightmapper进行光照贴图的速度会明显加快。Unity在Radeon Rays和OpenCL之上构建了一个纯粹的基于路径跟踪的算法,用于在Unity中烘焙光照贴图,带来超过CPU版本10倍的性能提升。由于它是预览版,目前具有有限的功能,最终将支持Unity中的所有照明功能。
你可以从Lighting窗口尝试使用GPU Lightmapper。它适用于所有具有超过2GB显存的现代GPU,但建议更大的显存用于更大的光照贴图。
轻量级渲染管道(预览)
Unity对轻量级渲染管道(LWRP)添加了一些改进,保留预览状态并准备在2019.1进入生产状态。在2018.3中添加了基于物理的光衰减,自定义渲染器和自定义渲染通道注入。
基于物理的光衰减
LWRP现在使用反向平方衰减(具有范围衰减)用于实时和烘焙灯。这在不同光照条件下提供更准确的结果,并允许具有较小范围的光,这反过来改善了每物体光剔除的性能。从先前版本升级到4.1.0预览时,你必须升级场景中的一些灯光设置。
改善阴影质量
深度和法线阴影偏移偏移现在按阴影贴图纹理像素大小缩放。这可以在调整阴影时提供更好的控制。无论阴影级联和阴影分辨率的大小,设置都有效。
自定义渲染过程
LWRP现在提供了一个简单的工作流程来扩展其渲染器。你可以使用ScriptableRenderPass类创建自定义渲染过程,并在渲染器中安排它们。在LWRP中有两种注入自定义渲染过程的方法。
你还可以通过实现IRendererSetup来完全覆盖LWRP渲染器。渲染器设置是一个可以附加到摄像机的脚本,该摄像机执行在其中注册的所有ScriptableRenderPasses。你可以使用它来实现不同的渲染策略,例如Forward +或Deferred Rendering。
文档更新
通过单击“包管理器”窗口中的“查看文档”,可以找到LWRP的文档。这会将你带到LWRP特定的文档站点。Unity为一些着色器(Lit和Simple Lit)添加了文档,Unity计划记录2019.1的所有LWRP。
性能改进
Unity在GLES2中添加了点光源和聚光灯的改进,以及支持HSR的GPU的改进。
有关更多信息,请查看PackageManager UI中提供的LWRP更改日志。也可以获取这个DEMO来学习:https://github.com/Verasl/BoatAttack
内置渲染管道与LWRP的比较
内置渲染管道以每个对象级别剔除灯光。它会在单独的渲染过程中对每个灯光进行着色。LWRP还会剔除每个物体的灯光。但是,它会在一次通过中遮挡所有灯光,从而减少批次。
下面的屏幕截图显示了Angry Bots 2演示中的一个场景。在这里比较Unity内置渲染管道(左)和LWRP(右)中的实时光照和阴影。在内置渲染管道中使用正向渲染路径(LWRP仅支持正向渲染)。
两个场景都使用相同的灯光设置:
- 1个方向灯(柔和阴影)
- 2点灯(无阴影)
- 2聚光灯(柔和阴影)
为了匹配内置渲染管道中的光照,Unity增加了LWRP场景中的点光源和聚光灯光强度。这不会导致任何额外的性能成本。
高清渲染管道(预览)
高清渲染管道(HDRP)专用于高端视觉效果和游戏。在2018.3版本中,Unity添加并改进了多项功能,以实现更好的视觉质量和改进的艺术家工作流程。这个版本也更稳定,包括更好地支持Metal for Mac,Vulkan for PC,Xbox One和PS4。
此外,Unity还增加了对VR(https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/VR-in-HDRP)和MSAA的初步支持(https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/VR-in-HDRP)。UI已针对HDRP各种元素的Inspector进行了更新:相机,灯光,反射探头和材质。还有一个新的照明模型,因此你可以创作更复杂的材质。
注意:此版本在HDRP package4.1.0的HDRP template中附带。要利用此处列出的功能,建议你在安装模板后升级到4.6.0。
平台支持,性能和稳定性
2018.3更好支持Metal和Vulkan API,包括更少的缺陷和更好的性能。缺陷仍然保留在透明物体的雾和贴花中,但与以前的版本相比,整体体验得到了极大的改善。
现在可以获得对VR的初步支持。有关如何设置项目的详细信息,请阅读(https://github.com/Unity-Technologies/ScriptableRenderPipeline/wiki/VR-in-HDRP)。VR需要前向渲染模式。仍然不支持相机相对渲染,目前在照明和体积方面存在一些问题。
与VR和前向渲染相结合,此版本增加了对MSAA的初步支持。除屏幕空间反射外,所有效果当前都使用MSAA(例如,SSAO,接触阴影)处理。请注意,MSAA会为渲染增加额外成本,因此应谨慎使用。
Unity 2018.3为PS4和XBox One提供了更好的HDRP性能。现在可以使用异步计算管道执行多种效果:屏幕空间环境光遮挡,屏幕空间反射,密度体积的体素化,光线剔除和材质分类。所有这些效果都可以与阴影渲染过程并行执行。
通过执行称为“标量化”的技术改进了前向渲染路径。该技术特定于控制台上使用的AMD GCN架构。
最后,你现在可以通过“渲染管道设置”对构建中包含哪些着色器变体进行更精细的控制。如果排除你知道不会使用的变体,则可以大幅缩短构建时间。
改进了UI和相机控制
HDRP UX已经简化。此外,你现在可以通过FrameSettings获得更多控制权。由于FrameSettings现在支持与后处理相同的覆盖系统,因此它可以从RenderPipelineSettings继承值并覆盖它们。相机现在支持Unity内置渲染管道的物理相机参数化。
在Light and Reflection探针的Inspector中,现在有一个用于高级设置的切换,因此UI不会混杂许多默认参数。
改善了当前功能的质量和控制
使用称为“深度合成”的技术改进了体积雾渲染。要阅读更多内容,请参阅HDRP团队成员之一的博客文章(https://zero-radiance.github.io/post/deep-compositing/)。此技术使你能够更好地组合与全局雾相互重叠的密度体积。此外,体积雾现在可以在远距离处以指数雾的形式回落,并支持激活高度雾。体积和密度体积的参数化和控制变得更加艺术家友好。最后,体积体素性能的照明得到改善。
Shadow系统现在更稳定,并提供更多控制。阴影有三个级别的质量:低,中和高。这些映射到不同的过滤算法(PCF和PCSS)。
注意:使用正向渲染路径时,只能在不同的质量模式之间切换。延迟路径默认为低质量。低质量是目前控制台的默认模式。
具有阴影图谱的阴影贴图的内存管理得到了改进。现在屏幕上有许多可见阴影的预算。此外,阴影框架现在根据距离缩放阴影贴图分辨率,并且如果没有空间,它会自动调整阴影大小以适合图集。这意味着将始终显示阴影 - 但是当它们不适合阴影图集时,它们的质量会降低。
现在可以独立于阴影贴图启用接触阴影。方向光,点光源或聚光灯支持接触阴影,但你目前一次只能使用一个,此外还提高了质量和性能。
为了帮助你调试阴影,Unity在Render Pipeline Debug窗口中添加了一组新工具。你现在可以显示每个灯光的阴影,阴影图集,每个阴影贴图的缩放系数以及阴影蒙版。
使用每通道选择掩码增强了贴图。这样,你可以创建仅影响材料属性子集的贴花。例如,你可以制作仅修改材质的正常属性,金属表面或平滑度的贴花。现在有两种模式:
- BaseColor,Normal和Smoothness
- BaseColor,Normal,Smoothness,Metal和AO(更耗费性能)
Unity还改进了Decal gizmo:你现在可以控制深度偏差和绘制顺序。
使用正向渲染路径,Decal现在可以正确地影响正常缓冲区,从而可以正确地影响屏幕空间反射。
Unity为Lights添加了额外的控件。例如,除Candela和Lumens之外,他们现在支持物理单位EV100和Lux远距离。HDRI天空可以使用Lux值。对于定向灯,你现在可以控制高光的形状以更好地模仿太阳光盘。点光源和聚光灯具有更柔和的衰减。Light explorer现在支持HDRP中的每种灯光类型。
对反射系统的改进
2018.3还带来了屏幕空间反射(SSR)。有了这个,你可以在每个光滑的表面上启用反射。粗糙的表面会回归常规的反射探测/平面反射。你可以将材质标记为不接收SSR。
注意:使用大分辨率时,此效果目前很消耗性能。
此版本还引入了平面反射,你可以使用它来获得平面表面上的高质量反射。平面探针组件的行为与反射探针组件完全相同,除了它是实时渲染的。它们与Reflection Probes具有相同的控制。
反射控制:反射探测和平面反射UI已更新,为艺术家提供更好的工作流程。你现在可以控制FrameSettings以呈现实时反射。
更好的功能与内置渲染管道奇偶校验
使用Light Layer,你可以标记灯光和对象,因此只有具有相同标签的对象才能从特定灯光接收光照。它也可以在内置渲染管道中使用。在HDRP中,照明架构是不同的,这需要对此功能进行改进。在这个版本中,Unity引入了与 Punctual light,区域灯,反射探头和平面反射一起使用的Light Layer。第一个版本最多支持31个灯。目前,阴影还未正确处理。
Terrain是内置渲染管道的一项功能,与HDRP不兼容。此版本引入了Terrain Lit着色器, 可与内置地形系统兼容。它在一次绘图调用中最多支持八个图层。Terrain Lit着色器使用与Lit着色器相同的光照模型,但仅提供LayeredLit着色器中可用的一组受限选项。注意:Terrain Lit着色器当前不支持镶嵌或置换。
内置渲染管道中渲染粒子通过粒子系统支持。在HDRP中,仅支持unlit的粒子系统着色器。为了在GPU上使用lit的粒子和效果,这个版本支持新的视觉效果图,它可以使用Lit着色器以及一个名为“Simple Lit”的简化版本。这个更简单的着色器为绘制大量的点亮提供了更好的性能粒子。
更多调试工具
调试工具始终很重要,因为它们使你能够跟踪问题并保持监控性能。 在此版本中,Unity在Render Pipeline调试窗口中添加了几个新的调试修改:
- 显示单个阴影/阴影图集/阴影缩放系数
- 覆盖发光颜色
- 屏幕空间反射调试模式
- 亮度计模式
- 能够按类型禁用Light
- 冻结相机剔除,以便你可以检查通过相机平截头体剔除了哪些物体
- 显示光体积
新的着色器和着色器图支持
HDRP现在支持Shader Graph,它将成为未来开发的主要解决方案。Lit主节点可用作着色器图形版本,也可用作内置着色器版本(Lit,LayeredLit,TerrainLit)。所有其他着色器仅作为Shader Graph版本提供。未来的着色器也将使用Shader Graph构建。
PBR主节点基于Lit着色器。它使用一组受限制的功能,与LWRP共享,因此你可以创建跨管道资产。2018.3增加了对贴花和光layer的支持到PBR主节点。
Lit着色器现在可在Shader Graph中使用。此着色器可解锁完整的功能,包括外套遮罩,彩虹色,半透明,次表面散射和各向异性。但是,尚不支持用于精确法线混合的表面渐变。此外,此版本的着色器图形仍然不支持曲面细分。
注意:已从内置的Lit着色器禁用风效果,并在着色器图中启用。如果要模拟风或任何其他顶点动画,则必须使用着色器图。
Unity还为Shader Graph添加了一个Fabric着色器。有了它,你可以使用柔和的外观来制作织物材料,并伪造纤维的散射。Fabric主节点支持两种照明模型:CottonWool和Silk。使用它们来制作各种各样的布料。CottonWool的实施基于Sony Pictures Imageworks最近的研究(http://www.aconty.com/pdf/s2017_pbs_imageworks_sheen.pdf),该研究在Siggraph 2017 上展出。Silk 版本基于GGX各向异性。
StackLit着色器已添加到Shader Graph中。注意:内置的StackLit已从包4.4.0中删除,转而使用Shader Graph版本,Unity在同一个包中引入了该版本。
StackLit着色器是对Lit着色器的改进,它更注重质量而非性能,可能不适合某些游戏。与Lit相比,StackLit更准确地处理表面涂层。这要归功于Unity Labs的Laurent Belcour的研究,Unity在Siggraph 2018上展示了“ 使用统计算子的原子分解对层状材料进行高效渲染(https://belcour.github.io/blog/research/2018/05/05/brdf-realtime-layered.html)。”它有一个新的参数化来控制亮点:模糊参数化。这篇论文在“朦胧光泽的复合BRDF模型”中(https://hal.inria.fr/hal-01818666)有所介绍。
最后,此着色器允许你无限制地将所有要素混合在一起。例如,你可以具有次表面散射,彩虹色和模糊参数化的各向异性。
此外,这个版本修复了很棒的社区报告的很多错误。GitHub上(https://github.com/Unity-Technologies/ScriptableRenderPipeline/blob/release/2018.3/com.unity.render-pipelines.high-definition/CHANGELOG.md)的更改日志中提供了修复,更改和添加的完整列表。
改进了视频并删除了传统的MovieTexture功能
Unity 2018.3包含更快的纹理更新。这有助于消除主线程上进行纹理上传所花费的所有时间,并减少图形线程中的时间。像HoloLens和较慢的Windows版本这样的平台应该特别受益于此。
Unity还添加了音频重采样功能,使用户可以更改视频的速度,并相应地保持音频变化速度并保持同步。
在Unity 2018.2中开始删除旧版 MovieTexture功能。如果你的项目仍使用MovieTexture,则应升级它以使用Unity 5.6中引入的VideoPlayer。由于VideoPlayer与MovieTexture方法根本不同,因此无法提供自动升级工具。
服务
云诊断(之前的性能报告)
Performance Reporting有许多新功能和更新。Unity已经将服务重命名为“云诊断”,以便更好地捕捉它能够和将要做的范围。最重要的是,这些功能不再局限于Unity Plus和Pro用户!所有用户都可以访问它们。要了解更多信息,请查看此博文(https://blogs.unity3d.com/2018/11/06/performance-reporting-is-now-cloud-diagnostics/)。
首先,使用2018.3构建的游戏发送的报告现在可以包含调试日志和自定义元数据。这两个功能都可以帮助你更好地了解导致报告归档的方案。
Unity还引入了一种全新的报告类型。虽然之前的报告类型(崩溃,例外)是由机器生成的,但用户报告可让你直接从最终用户收集反馈。他们可以向你发送有用的信息,例如屏幕截图,保存的游戏,视频或其他你认为有用的信息,以帮助改善你的用户体验。所有这些报告都在Unity的开发人员仪表板中收集和汇总。
联网游戏
随着UNET被弃用(https://blogs.unity3d.com/2018/08/02/evolving-multiplayer-games-beyond-unet/),Unity始提供对新的多人游戏功能的访问。alpha版本中提供了新的网络传输层。它非常精简,适用于未来Unity版本的ECS风格实现。此外,两个关键的多人游戏服务目前处于封闭式alpha状态。首先,游戏托管服务器允许你在云上运行。其次,Matchmaking让你不仅可以将玩家组合在一起,还可以与游戏托管服务器配合使用,这样你就可以根据玩家的实时需求自动提升云利用率。
要访问open alpha中的联网游戏功能,请查看GitHub库(https://github.com/Unity-Technologies/multiplayer)。
想参与封测?现在申请:http://unity.com/applyrealtime
Project Tiny预览包
Project Tiny是一种新的模块化Unity运行时和编辑器模式,用于构建可立即加载且无需安装的游戏和体验。Project Tiny为开发人员提供了快速创建高质量2D即时游戏和可播放广告所需的工具,这些广告尺寸较小,并且可以在各种移动设备上快速启动。
Project Tiny作为一个名为“Tiny Mode”的package提供。要安装它,请打开2018.3软件包管理器,启用preview packages,然后安装Tiny Mode。它可以与所有Unity许可证一起使用 - Personal,Plus和Pro。你可以在预览包下载中找到Tiny用户手册,API文档和示例项目。可以在解决方案页面(http://unity3d.com/solutions/instant-games/2d-games-and-playables)和Project Tiny Preview 博客文章中(https://blogs.unity3d.com/2018/12/05/project-tiny-preview-package-is-here/)找到更多信息以及培训视频。
FPS Sample
在2018年10月的Unite LA,Unity首次发布了FPS Sample项目,这是一款多人在线的FPS游戏。
游戏示例项目包括从源代码和艺术作品资产到基于最新版Unity的声音效果的所有内容。FPS Sample提供了一个很好的机会来验证一些2018.3功能的作用。当然,也欢迎使用整个项目作为你自己的在线射击游戏的框架或起点。更重要的是,所有资产都可以在Unity Companion许可(https://unity3d.com/legal/licenses/Unity_Companion_License?_ga=2.186696684.514204415.1543403310-299831089.1543403310)下使用,这意味着你甚至可以将它用于基于Unity的商业项目。
要获取项目并查看2018.3功能的实际操作,请转到GitHub上的项目页面(https://github.com/Unity-Technologies/FPSSample),获取有关如何下载和运行项目的说明。
你可以在此博客文章(https://blogs.unity3d.com/2018/10/24/introducing-the-fps-sample/)或FPS示例网页(https://unity.com/fps-sample)上了解有关FPS示例项目的更多信息。
发行说明
完整版包括45个功能,250个更改和改进,以及1915个修复。要一如既往地查找所有详细信息,请参阅发行说明(https://unity3d.com/unity/whats-new/unity-2018.3.0) 以获取完整列表。
最好的办法就是赶紧下载Unity2018.3亲手试用咯!
《郑洪智的Unity2018课》,倾尽我8年的开发经验,结合最新的Unity2018,带你从入门到精通。
目前双12拼团6.8折!