Search Unity

Unity 2017.3 is here

2017.3 completes the 2017 cycle introducing several new features and improvements across the board for both artists and developers.

We’re excited to share all the great new and improved features available today with Unity 2017.3. Before drilling down into the details, though, we wanted to look back at Unity 2017. (If you can’t wait, just jump straight to the What’s new section below.)

We continued to improve graphics quality and runtime performance to help you stay ahead of the curve on the latest emerging platforms (desktop, console, mobile, VR, AR, smart TVs) and to take advantage of the latest GPU and native Graphics APIs. A great example of this is the award-winning Adam demo-film series.

Other features, like the updated 2D tools and Unity Teams, help you get better results, faster. Finally, we’ve given you new ways to use powerful data (in the Ads, IAP and Live-Ops Analytics solutions) to optimize game performance in real-time and maximize your revenue.

Unity 2017.1, 2017.2 and 2017.3 delivered many key features supporting these goals. Here’s a summarized recap:

We’re also excited to share some of the Unity 2017.x productions released or in progress:

Oats Studios / ADAM: The Mirror & Episode 3

Spiraloid / Nanite Fulcrum

KO_OP / GNOG

Baobab Studio / Asteroid!

EpicHouse Studios / Phased

Cybernetic Walrus / Antigraviator

Rebel Twin / Dragons Hill 2

Slow Bros / Harold Halibut

WITHIN / Life of Us

Seriously / Best Fiends

Monomi Park / Slime Rancher

Videogyan / TooToo Boy

And finally before jumping to 2017.3 details, check out this highlight video of Unity 2017.x titles and some of the new & improved features:

What’s new in Unity 2017.3

As the year comes to an end, we are happy to announce that Unity 2017.3, the final release in our 2017 cycle, is now available. 2017.3 introduces several new features and improvements across the board for both artists and developers, and we’re particularly excited about sharing our improved toolset for creating interactive 360-video experiences.

We’re finishing 2017 strong with a huge change log of new features, including the following highlights:

Panoramic 360/180 video

We are particularly excited to bring you improvements to panoramic 360/180 and 2D/3D video workflows. You can now easily bring in various styles of 2D or 3D video in Unity and play it back on the Skybox to create 360-video experiences targeting standalone, mobile and XR runtimes.

Particle System improvements

Improvements include new Unlit and Surface particle shaders and ribbonized particle trails. These allow particles to be connected based on their age. Since each point on these ribbonized trails is represented by a particle, they can be animated, for example, by using them in conjunction with the Noise Module.

Script compilation – User-defined managed assemblies

You will be able to define your own managed assemblies based on scripts inside a folder. By splitting your project’s scripts into multiple assemblies, script compilation times in the editor can be greatly reduced for large projects. Managed Memory Profiler supportYou can now take advantage of Mono/.NET 2.0 support for the APIs required to take managed memory snapshots. This makes it possible to take memory snapshots directly inside the editor.

The updated Crunch Library

The Crunch Library can now compress DXT textures up to 2.5 times faster, while providing about 10% better compression ratio. But more importantly, the updated library is now capable of compressing ETC_RGB4 and ETC2_RGBA8 textures, which makes it possible to use Crunch compression on iOS and Android devices.

Graphics improvements

There is now support for HDR compressed lightmaps (BC6H) on PC, Xbox One and PlayStation 4. We also made a number of GPU instancing improvements, and we’re adding Dynamic Resolution as an engine feature debuting on the Xbox One platform with other platforms to follow later.

Lighting improvements

We are introducing Lighting modes for the Progressive Lightmapper (Baked Indirect, Shadowmask and Subtractive), LOD support with realtime probes providing a more intuitive workflow, and HDR encoding support for baked lightmaps for higher visual quality.

VR device info

To help you optimize VR experiences, you can now capture VR-device refresh rate, dimensions, aspect ratio, HMD-tracking and controller-tracking as part of device info and device status events.

We are introducing Playable scheduling, which allows you to prefetch the data before it is actually played. The first implementation affects AudioClipPlayables, but in the future, the scheduling will be used by other assets: audio, video and timeline. We added support to animate integer and enum component properties. We are also introducing a New “2D” mode button in the animation Preview window. Finally, it is now possible to zoom, frame and autofit in the Animator window!

Xbox One X Support

We added support for the new Xbox One X console from Microsoft. Use Quality Settings to enable support for 4K HDR rendering, or use the extra power in other ways such as improving framerate or increasing graphical fidelity. Xbox One X support is available in all 2017.x versions of Unity.

In November 2016, Unity and Xiaomi announced a partnership to help developers bring games to Xiaomi’s 200 million customers in China, the largest Android store in this region. Since then a number of early-adopter games have gone live on Xiaomi’s store. At the end of November, the push-to-store service offering for Xiaomi’s brand-new portal went live! To get started, check out the FAQ and getting started guides on this site.

Standard Events

Standard Events is now officially out of beta, and you can access it directly from the Unity Editor in 2017.3. We’re also introducing funnel templates, which together with Standard Events, allow you to create common funnels that can reveal key insights with just a few clicks.

Editor/engine

Script compilation – Assembly definition files

Unity automatically defines how scripts compile to managed assemblies. Typically, compilation times in the Unity Editor for iterative script changes increase as you add more scripts to the Project increasing compilation time.

Now, you can use an assembly definition file to define your own managed assemblies based on the scripts in a folder. Separating project scripts into multiple assemblies with well-defined dependencies ensures that only the required assemblies are rebuilt when you make changes in a script. This reduces compilation times and is particularly useful for large projects.

Each managed assembly can be thought of as a single library within the Unity Project.

The figure above illustrates how to split the project scripts into several assemblies. Because only the scripts are changed in the Main.dll, none of the other assemblies are recompiled. And since the Main.dll contains fewer scripts, it compiles faster than the Assembly-CSharp.dll.

Similarly, script changes in only Stuff.dll cause Main.dll and Stuff.dll to recompile.

Memory Profiler support for Mono .NET 2.0

Back in 2015, we released an experimental managed memory profiler with support for IL2CPP. The memory profiler started as a Unity Hackweek project and was since released on BitBucket as an open source project. See the memory profiler project page on Bitbucket for details and a demo video.

We’ve added Mono/.NET 2.0 support for the APIs required by the memory profiler to take managed memory snapshots. This makes it possible to take memory snapshots inside in the editor.

Transform Tool

The Transform Tool is a multitool, that contains the functionality of the standard three: Move, Rotate and Scale tools. The Transform Tool is not meant to replace the three standard tools, but rather, to provide a tool for situations where you would want all of the three tools present without having to switch back and forth between them.

World gizmo

With the pivot rotation set to “Global” mode, you can translate and rotate the GameObject along the global axes.

Axis translation, Plane translation.

Axis rotation, Screen Space rotation, Free rotation.

Global scaling.

Local gizmo

When the pivot rotation is in “Local” mode, you can also scale along local axes.

Local axis scaling.

Screen Space Gizmo

If you keep the “SHIFT” key pressed, the gizmo enters Screen Space mode.

A new Collider implementation that replaces curb feelers with a clever camera-repositioning algorithm, which preserves camera height or distance from target

A New Framing Transposer that respects composition and framing rules by moving the camera without rotating it

The New Cinemachine MixingCamera, which drives a continuous blend of up to 8 virtual cameras from timeline or game logic. You can use it to create complex rigs with custom blends and expose them as ordinary vcams.

Other new features and improvements include dolly cam behavior and POV, a 1st-person shooter type, aim component, and much more.

Graphics

Progressive Lightmapper (preview)

Lighting modes support

In Unity, it is possible to control lighting pre-computation and composition in order to achieve a given effect by assigning various modes to a Light (Realtime, Mixed and Baked). Using Mixed mode significantly reduces realtime shadow distance increasing performance. Higher visual fidelity can also be achieved as far distance shadows are supported along with realtime specular highlights.

In Unity 2017.3, you can do the same thing with the Progressive Lightmapper choosing from among the following Lighting modes:

In Baked Indirectmode, Mixed lights behave like realtime dynamic lights with additional indirect lighting sampled from baked lightmaps and light probes. Effects like fog can be used passed realtime shadow distance where shadowing would otherwise be missing.

In Shadowmaskmode, Mixed lights are realtime, and shadows cast from static objects are baked into a shadowmask texture and into light probes. This allows you to render shadows in the distance drastically reducing the amount of rendered shadow casters based on the Shadowmask Modefrom the quality settings.

In Subtractive mode, direct lighting is baked into the lightmaps, and static objects will not have specular or glossy highlights from mixed lights. Dynamic objects will be lit at realtime and receive precomputed shadows from static objects via light probes. The main directional light allows dynamic objects to cast a subtractive realtime shadow on static objects.

To try out the lighting modes in the Progressive Lightmapper, make sure that you have a Mixed Light in your scene and then, in the Lighting Window, select a Lighting Mode.

Light LODs with real-time probes and baked lightmaps

We’ve added the ability to generate lighting for level of detail (LOD) objects with real-time light probes in addition to baked lightmaps, offering a more intuitive workflow for users to author their lighting. The LOD allows you to have meshes in lower complexity when the camera is far away and higher complexity when the camera is closer. That way you can reduce the level of computation when rendering faraway objects. When you use Unity’s LOD system in a scene with baked lighting and Realtime GI, the system lights the most detailed model out of the LOD Group as if it is a regular static model. It uses lightmaps for the direct and indirect lighting, and separate lightmaps for Realtime GI.

However, for lower LODs in an LOD Group, you can only combine baked lightmaps with Realtime GI from Light Probes or Light Probe Proxy Volumes, which you must place around the LOD Group.

To allow the baking system to produce real-time or baked lightmaps in 2017.3, simply check that Lightmap Static is enabled in the Renderer component of the relevant GameObject.

This animation shows how realtime ambient color affects the Realtime GI used by lower level LODs:

HDR support in the lightmap pipeline

We’ve added support for HDR compressed lightmaps (BC6H) on PC, Xbox One and PlayStation 4 for achieving even better quality visuals. The advantage of using High Quality lightmaps is that they don’t encode lightmap values with RGBM, but use a 16-bit floating point value instead. As a result, the supported range goes from 0 to 65504. The BC6H format is also superior to DXT5 + RGBM combination as it doesn’t produce any of the banding artifacts associated with RGBM encoding and color artifacts coming from DXT compression. Shaders that need to sample HDR lightmaps are a few ALU instructions shorter because there is no need to decode the sampled values, and the BC6H format has the same GPU memory requirements as DXT5.

The HDR is easily enabled by setting the Lightmap Encoding option in the Player Settings to High Quality.

When lightmap Compression is enabled in the Lighting Window, the lightmaps will be compressed using the BC6H compression format.

GPU instancing improvements

GPU Instancing was introduced in 5.6 to reduce the number of draw calls used per scene by rendering multiple copies of the same Mesh simultaneously, and thus significantly improving rendering performance.

There are a number of improvements to GPU instancing, including Per-instance properties which are now packed into a structure data type with instancing constant buffer containing only one array of such structures.

For most platforms, the instancing array sizes are now calculated automatically and no longer need to be specified by user (maximum allowed constant buffer size/size of the above-mentioned structure type). Instancing batch sizes are therefore improved on OpenGL and Metal, and instancing shader variants compile much faster and potentially cost less in terms of CPU-GPU data bandwidth.

Crunch compression library update

The updated Crunch library, introduced in Unity 2017.3, can compress DXT textures up to 2.5 times faster with a 10% improvement in compression ratio. More importantly, the updated library is now capable of compressing ETC_RGB4 and ETC2_RGBA8 textures, which makes it possible to use Crunch compression on iOS and Android devices.

Crunch is a lossy texture compression format, which is normally used on top of DXT texture compression. Crunch compression helps to reduce the size of the textures in order to use less disk space and to speed up downloads. The original Crunch compression library, developed by Richard Geldreich, is available on GitHub. Support for Crunch texture format was first added in Unity 5.3 and in Unity 2017.3, we are now introducing an updated version of the Crunch compression library.

Textures compressed with Crunch are first decompressed to DXT and then uploaded to the GPU at runtime. Crunched textures not only use less space, but they can be also decompressed really fast. This makes the Crunch format very efficient for distributing textures. At the same time, Crunched textures can take quite a lot of time to compress, which is a major drawback when using Crunch (for a big project, compression of all the textures into Crunch format can take several hours in the Unity Editor).

This should help you reduce the build sizes of your mobile games, and thus make it easier to comply with App Store over-the-air size limitations, ultimately letting you reach a wider audience with your content.

To use Crunch compression on Android, iOS and tvOS platforms, you simply select either the “RGB Crunched ETC” or “RGBA Crunched ETC2” format for your textures in the Inspector window. If you enable the “Use Crunch Compression” option in the Default tab, all the textures on the Android platform will be compressed with ETC Crunch by default.

Below you can see examples of textures compressed with Crunch using default quality settings. Note that the artifacts on the final textures are introduced both by Crunch compression and selected GPU texture format (DXT or ETC).

Original image24 bits/pixel

DXT4 bits/pixel

Crunched DXT1.24 bits/pixel

Original image24 bits/pixel

ETC4 bits/pixel

Crunched ETC1.33 bits/pixel

If you are interested in knowing more about the updated Crunch texture compression library, visit this blog post, which includes more examples of size and performance comparison.

Dynamic Resolution debuting on Xbox One platform

As its name suggests, Dynamic Resolution refers to dynamically scaling some or all of the render targets to reduce workload on the GPU. Dynamic Resolution can be triggered automatically when performance data indicates that the game is about to drop frames due to being GPU bound. In such a case, gradually scaling down the resolution can help maintain a solid frame rate. It can also be triggered manually if the user is about to experience a particularly GPU intensive part of gameplay. If scaled gradually, Dynamic Resolution can be virtually unnoticeable.

360 Video Player

The new video player introduced earlier this year, made it possible to use 360 videos and make them truly interactive by adding CG objects, ambisonic audio, visual effects, and more.

In 2017.3, you can now bring a 2D or 3D 360-video into Unity and play it back on the Skybox to create standalone 360-video experiences targeting VR platforms.

Unity offers built-in support for both 180 and 360-degree videos in either an equirectangular layout (longitude and latitude) or a cubemap layout (6 frames).

Equirectangular 2D videos should have an aspect ratio of exactly 2:1 for 360-degree content, or 1:1 for 180-degree content.

Equirectangular 2D video

Cubemap 2D videos should have an aspect ratio of 1:6, 3:4, 4:3, or 6:1, depending on the face layout:

Cubemap 2D video

To use the panoramic video features in the Unity Editor, you must have access to panoramic video clips, or know how to author them. Check our documentation pages for a step-by-step guide on how to display any panoramic video in the Unity Editor.

Keep in mind that many desktop hardware video decoders are limited to 4K resolutions and mobile hardware video decoders are often limited to 2K or less, which affects the resolution of playback in real-time on those platforms.

ARCore SDK Preview 2 for Unity

Technical improvements introduced with the new developer preview include a C API for Android NDK, functionality to pause and resume AR sessions allowing users to pause and continue tracking after app is resumed, improved runtime efficiency and finally, improved trackable and anchor interface across anchor, plane finding, and point cloud. Learn more about ARCore Developer Preview.

Vuforia 7 support

With Unity 2017.3 support for Vuforia 7, you can build cross-platform AR apps. Vuforia 7 introduces Model Targets, a new way to place digital content on specific objects using pre-exiting 3D models. Also new is Vuforia Ground Plane, a capability that allows you to place digital content on a horizontal surface such as a floor or table. Ground Plane will support an expanding range of iOS and Android devices, taking advantage of platform enablers such as ARKit where available. Learn more about Vuforia in Unity 2017.

2017.3 Particle system

Speed Modifier

The Velocity over Lifetime module now contains a new curve, which allows particle speeds to be controlled over the duration of a particle’s lifetime. This makes it possible to change the speed of particles without affecting the direction they are traveling in. It also includes support for negative speeds, which is useful for creating gravity/vortex effects.

Standard Particle Shaders

We are releasing surface and unlit shaders for use with particles. They provide all the core particle functionality that you would expect, via a similar interface to our existing Standard Shader. It is now easy to configure blend modes, alpha testing thresholds, soft particle distances, and many more features. Support for blended flipbooks and distortion effects is also built in. The surface shader also makes it easy to support Normal Mapping and PBR lighting.

Ribbonized Particle Trails

There is a new option in the Trails Module called Ribbon Mode, which allows particles to be connected based on their age, allowing you to avoid each particle leaving trails behind it. Because each point on the trail is represented by a particle, it is possible to use this mode to create animated trails, for example, by using it in conjunction with the Noise Module.

Other Particle System improvements

When using meshes in the Shape Module, it is now possible to use meshes whose primitive type is Line or LineStrip. This makes it easy to spawn particles along lines, instead of only on the surface of a mesh.

Unity has added support for 32-bit meshes in Unity 2017.3, finally dropping the constraint for meshes to have 65,536 or fewer vertices. This support has been fully integrated for Particle Systems, meaning you can spawn on the surface of these new large meshes. Although it is likely to have high-performance costs, you can now render particle meshes with 32-bit indices as well.

We’ve also made some improvements to the editor in order to improve your workflow when authoring effects:

The debug checkboxes have been moved from the Inspector to the Scene View Overlay to make them more accessible (Resimulate and Show Bounds).

There is a new dropdown menu in the Scene View Overlay called “Simulate Layers,” which you can use to preview all looping effects, rather than only the selected ones. Use the Layer Mask to decide which effects to preview.

The Scene View FX dropdown menu has a new option for rendering Particle Systems. This allows you to show/hide Particle Systems as a way of decluttering your Scene view.

Cloth improvements

There are a number of improvements to Cloth physics, including better in-editor tools for authoring Cloth with more of PhysX internals exposed. This gives you more options for collisions, self-collisions, etc.

You can now paint constraints on to the cloth using a brush-based method and update. You can also enable intercollision to make different cloth objects collide.

Platforms

Facebook segmented upload feature

There is now support for Facebook’s new segmented upload feature for Game Room. Previously, a single file with a max size of around 250MB was uploaded to Facebook. Now, only those parts that were changed are uploaded (divided into segments of 10 MB).

Unity has supported Facebook’s gaming desktop app, Game Room, since Unity 5.6. Supporting the Windows-native client allows players to experience both web games and native games built exclusively for the platform. Learn more about how to reach up to two billion users on Facebook.

XR

Oculus Dash Depth Support

Witch Oculus introducing its new Oculus Dash menu and UI in it’s latest Rift’s update, we have included Oculus Dash Depth support and exposed camera-depth information, so that Oculus Dash can partially occlude world-space overlays.

Terrain Trees for VR

Stereo Instancing for PSVR

In 2017.2, we delivered Stereo Instancing for VR PC based platforms; we’re now expanding to PSVR. Stereo Instancing is an exciting rendering advancement that unlocks hardware optimizations for rendering stereo images. This means that developers will be able to do more while maintaining a smooth framerate

Deprecation of platforms

In order to focus our efforts latest versions of DirectX, Unity 2017.3 (both the Unity Editor and the Standalone player) will no longer support DirectX 9 (which was originally released in 2002). You can read more about how to continue to support Windows XP on our blog.

Finally, as originally announced in October 2017, Unity will no longer include Samsung Tizen and SmartTV from version 2017.3. However, Unity stills provides 12 months of support, including patches and security updates starting from the release of 2017.2 (October 12 2017). To get the latest info on Tizen and SmartTV for Unity, visit thepartner page for Samsung or contact Samsung directly at support@samsungdevelopers.com.

Unity Teams

Unity Teams features are now available for purchase, so teams of all sizes can save, share and sync their projects easily within Unity. Unity Teams Basic is free and is great for small teams that are just getting started. More features and capacity are available with Unity Teams Advanced, which starts at at $9 per month. You can add more team members, cloud storage, or more automated builds, paying only for what you need. Details at unity3d.com/teams.

If you’ve been using Unity Teams features (Collaborate, Cloud Build), you can upgrade to a paid subscription by January 9, 2018 to prevent interruption in service. Furthermore, it’s a great time to upgrade to Plus and Pro. All Unity Plus and Pro subscriptions that are active as of January 31, 2018, are entitled to Unity Teams Advanced at no additional cost. Learn more about this offer.

LiveStream

For Plus and Pro users, LiveStream now displays instantaneous metrics broken down over the preceding 30 minutes. IAP revenue is displayed when verified, making income reporting more accurate. There are also options for filtering New Installs, Sessions, and Verified IAP Revenue in the Activity view.

79 评论

Shame you STILL haven’t fixed the proxy issues!! Still cannot use on a corporate network or a school network. When will this be fixed? We will have to switch away from unity if it isn’t fixed soon as this newest version bombs out all together.

I like the new particle features, but 2017.3 completely breaks my UI workflow. Pulling UI prefabs into a canvas now changes all the child objects positions to (seemingly) arbitrary values, and even applying the prefab changes them to different values than they were when I clicked apply! This is new to 2017.3, and it’s the most frustrating bug I’ve encountered in a long time. For now, I’ll be reverting back to a previous version.

Im on the newest update 2017 30f3 and trying to run the groundfloor and newest tech that has been released. Im running a xaomi redmi 3s and see under supported devices there is a update after the new 201730f3 – when will this update patch reach us – im really keen to get this going?

Our app boot time on Android (before any of our function calls) went from 2-3 seconds on 2017.2 to 18 seconds initial and 12 subsequent on 2017.3. Almost 20 seconds of black screen after clicking an app icon is income suicide. We were getting close to release, but this is completely unacceptable now. Can’t release in this state.

We’re working through all of the known bugs with the new scripting runtime now. Our hope is to have it non-experimental in 2018.1. Since stability is our top priority, we won’t fully release it until it is ready. If you are experiencing crashes, please help us out by reporting bugs. Also, we’ve had good discussions about a number of the intermittent issues on the forums, please join in if you can: https://forum.unity.com/forums/experimental-scripting-previews.107/

I really like you. I do not understand why it is still experimental… How long has it been in that state for? The most important feature is the support of .NET 4.6 imo. I have to find so many workarounds just to make .NET code work as it used to work 10 years ago. Very sad.

I’m interested in backing music used in the video. I tried to find it with Shazam app but there is no result. ? May you tell me the name of the artist, and related to the track itself – who made it, is there any license to reuse it, and that kind of thing? ✌

Hi, there’s a small issue with the Project window in the editor, I’m not able to drag and drop external files to it anymore? I mean, I’ve always been able to drag an image from the desktop and then drop it in a folder inside the Project window in the Unity editor, but now I’m only getting the ‘Forbidden sign’ in the cursor no matter where I place it :/ This slows a lot the development process for me :C

Hi Jose, this is an issue that happens when starting Unity as administrator. Windows will prevent you from dragging anything to the application. Check that your shortcut doesn’t have the ‘Run as Administrator’ checked.

Charles can you elaborate, I don’t see any Jobs items in the 2017.3 release of the roadmap, perhaps the changes are “under the hood”. I am excited for the next Beta and 2018, I figure the Jobs system will take some time to wrap my head around the coding process.

Just one slightly tangential question: When will Unity update the info on the Roadmap? v2017.3 still appears as Beta and unreleased, so it would be nice to have a refresh on the Roadmap before the year ends, so we can have a good insight of what is coming in 2018.

Holy crap! you guys achieved so much this year. Thanks everyone who worked hard to make so much progress for the editor and runtime. I’m loving the compilation improvements. Total pig to setup; but was worth every shred of it (90 second compilation down to 10 seconds – you can’t beat that).

It says there is a performance cost for 32-bit particles. Is it the same for 32-bit meshes? If so, is there an option to turn it off? And another thought, if there is an impact, would adding 8-bit meshes speed things up (particularly useful for us mobile developers)?

Imported meshes use 16 bit index buffers if they are smaller than 65k vertices, and use 32 bit index buffers if they are larger. There’s also an import setting that allows you to force 16 bit indices (effectively pre-2017.3 behavior) and split mesh into multiple chunks if that’s what you want.

How much of a performance overhead that would be, depends on a lot of things. 32 bit index buffers take 2x more memory/bandwidth than 16 bit ones; whether that’s significant amount of memory or bandwidth… “depends”. In any case, you do have an option to use either approach.

wrt 8 bit index buffers – there are no GPUs out there that support them, I think. Also, 8 bit indices would only allow having meshes up to 255 vertices in them, which is “very small” even for mobile :)

Very cool. Happy to see these editor updates and some lighting updates!

I was hoping to get similar updates to the collider editor handles. Could I suggest a form of “area/volume select” handles for the colliders so that we deselect them less often? Similar to the sphere free rotation or axis free rotation shown above? Would be great to be able to select the collider sides and scale them and not the time center point. (If I am missing something let me know, I did not see this added at any point).

Livestream is pretty neat. We have something similar to this on one of our backend services. But is there a way to keep the dots around vs having them fade away? We can’t really always watch it, so it would be nice to turn it on, check back in an hour and see where the dots are on the map.