Introducing Unity 2018.3
Unity 2018.3 introduces improved Prefab workflows, including nesting, as well as enhancements to our Scriptable Render Pipeline, Terrain system and scripting runtime, and a preview of the Visual Effect Graph.
Over the years, one of the features we’ve heard you requesting most often has been the ability to nest Prefabs. After conducting numerous interviews, usability tests and research at game jams, however, we found out that a lot of you also needed several other changes to the Prefab workflows. Therefore, we have been improving the whole system with a focus on reusability, control and user-friendliness.
The new Prefab workflows allow you to split up scenes and Prefabs on a granular level. They give you greater flexibility, increase your productivity and enable you to work confidently without worrying about making time-consuming errors.
Continuing our focus on workflow improvements, Unity 2018.3 now has unified Settings windows for Project Settings and Preferences. The new windows are dockable and searchable, which makes it much more convenient to quickly find and change settings.
The default scripting runtime is now .NET 4.x. The old .NET 3.5 runtime has been deprecated and support for it will soon be dropped. Projects that target the .NET 4.x scripting runtime will be able to use the open-source Roslyn compiler.
In this release, we also added a PhysX 3.4 upgrade that comes with improvements to stability and performance as well as support for multiple worlds and C# Job queries.
The world-building 2D Tilemap tool now enables you to build isometric Tilemaps, which makes it easier to create 2D projects such as strategy, tycoons and simulation games.
Unity 2018.3 also ships with an update to the Terrain system, which marks the beginning of a larger overhaul. In this update, our focus has been not only to set the foundation for further improvements with a few tweaks to the UI and tools but also to improve performance. We also added High-Definition Render Pipeline (HDRP) and Lightweight Render Pipeline (LWRP) support.
Unity 2018.3 includes a number of improvements to the HDRP (preview). This version adds preliminary support for VR and multisample anti-aliasing and improves support for PC, Mac, XBox One and PS4. The UI of various Inspectors of HDRP elements is now updated: Camera, Lights, Reflections Probe, and Material. Finally, we added a new lighting model, so you can author more complex materials.
We are also introducing the GPU Progressive Lightmapper in Preview for Windows and several improvements to lighting.
Our new Visual Effect Graph, which ships in Preview as a package, enables you to create beautiful effects using a node-based system that is both easy to use and flexible. Inspired by leading VFX software tools for films, it empowers artists to create stand-out visual effects for games and other projects with millions of particles running on the GPU.
Unity 2018.3 also includes several new features for the existing Particle System. For example, there are Particle Meshes that can now be flipped just like with billboards, Particle Lights that now support Real-time Global Illumination, and the new Ringbuffer Mode, which makes it easier to create persistent effects like footprints or bullet holes by keeping particles visible after their lifetime expires and until they are replaced.
Mobile improvements include Dynamic Resolution Scaling support for Vulkan and Metal, Android AppBundle generation support and faster APK package build times on Android with APKzlib.
For XR, we added Native Support for Daydream Controllers, Haptics APIs for VR controllers, and updates to the AR Foundation as well as XR Performance Testing.
Show me all the details
Editor & workflows
One of the top-requested additions to Unity is the ability to nest Prefabs. But from the numerous interviews, several usability tests, surveys of more than 150 customers, and two game jams we’ve done with a wide range of indie and AAA studios, we know a lot of you also needed several other changes to the Prefab workflows. Therefore, we have been improving the whole system with a focus on reusability, control, and safety. The long-term goal has been not only to implement support for nesting but to rethink the core Prefab workflows so different team members can simultaneously edit Prefabs confidently and efficiently.
The new Prefab workflows allow you to split up scenes and Prefabs on a granular level. They give you greater flexibility, increase your productivity and enable you to work confidently without worrying about making time-consuming errors.
Previously, you were forced to choose between creating large monolithic Prefabs, like buildings, or more granular ones, like pieces of furniture, but you couldn’t do both. Now with support for nested Prefabs, a large building can comprise many smaller room Prefabs, which in turn can comprise multiple pieces of furniture Prefabs, and so on.
We have implemented a backward compatible Prefab backend that now supports nesting and inheritance.
This makes it easier for teams of all sizes to:
- Split up Prefabs into multiple entities for greater efficiency
- Reuse any content, from small to large
- Work on different parts of content simultaneously
Flexible properties increase efficiency
As a default, a Prefab Variant inherits the objects and properties of the Prefab it is a variant of, but at the same time, you can both override those properties and add additional components and GameObjects. This is similar to the concept of inheritance in object-oriented programming.
For example, if you have a door Prefab, you can create a Variant of it and assign it a different mesh and material to make it look old and broken. Any changes made to the base door Prefab will affect the Variant, allowing you to easily tweak the size of the Collider for both doors by changing the base.
We have also improved the visualization of property and object overrides for Prefab instances, and added the ability to apply overrides on multiple levels of granularity: per property, per Component/GameObject, or, as before, the entire Prefab instance.
Avoid time-consuming mistakes
An issue we found was that when you wanted to edit a Prefab Asset, you had to drag it to an open scene in the Hierarchy to modify it, apply the changes, and then remember to delete it again. Another big issue was the Apply button for Prefab instances in the Inspector. With this button, you could accidentally apply changes to the Prefab Asset, and you had no easy way of seeing an overview of what you were changing. We solved this by introducing the new Prefab Mode, which enables you to edit Prefabs in isolation.
Being able to edit an entire Prefab Asset without having to instantiate it in the scene or edit an existing instance means you can avoid mistakes related to accidentally applying overrides in the scene. By being able to edit instances and assets separately, you can make your changes with confidence.
Learn how the Unity R&D team’s Nikoline Høgh and Stine Kjærbøll went on a journey of discovery: Running user tests, conducting surveys and talking face-to-face with 150 customers, they gained valuable insight that has helped fundamentally improve the Prefab workflows.
Sample project to help you get started
We added a collection of examples for learning how to use the new improved Prefab workflows, which are available here. Let us know what you think by sharing information about the new Prefab workflows on our forum.
In 2018.3, we added new windows to give you a consistent and efficient way to find and manage all User Preferences and Project Settings. The windows are dockable with easy left-to-right navigation, and you can search through all the settings to quickly find what you’re looking for.
The windows also come with an API so you can easily add your own settings for your Package or Asset Store plugin.
It is now also easier for you to work with window tabs. The selected window tab is highlighted with a blue outline and the width of the tab is adjusted according to the length of the tab title. When the number of open tabs exceeds the width of the window, you can scroll through the windows using the arrow keys.
In 2018.3 significant improvements have been made to how Timeline Animation Tracks handle animations on the root transform of a hierarchy.
New Track Offset Modes
These modes accurately indicate in Timeline where in the scene a character should start animating from. In pre-2018.3 versions of Timeline, the starting position was dependent on the animator state. The track now provides you with additional options with Auto mode for backward compatibility.
Adapts to Scale
Timeline now applies local scale to the animations on the Root Transform if the Apply Root Motion flag on the animator is set. This makes Timeline assets even more reusable between different GameObjects, and helps remove foot-sliding and other unwanted artifacts.
Root Motion No Longer Required
Prior to 2018.3, for clips that animated root transform position and rotation, the animation clip required Root Motion Curves to be generated for any root transformation to apply. This is no longer required, meaning all clips that animated position and rotation will work with Timeline, with the exception of legacy clips.
Improved Editor Preview
We’ve improved in-editor Timeline previews. When using Scene Offsets, the scene position is used as an offset. Applying ease-in/ease-out will blend to the scene pose and scene position.
We also added Physical camera support for Cinemachine, an Event mapper and a new procedural noise editor with an interactive display.
Change the physical feel of Cinemachine cameras with the visual noise editor.
The ProBuilder 3D modeling and level design tools became a part of Unity earlier this year, and version 4.0 now brings a major update. It focuses on stability and bug fixes but also includes several new features and important changes.
Most importantly, ProBuilder 4.0 is now distributed as source code, and introduces a new- improved public API, giving developers many more options for customization in the Editor and at runtime. The update also adds support for the new Nested Prefab workflows, performance improvements, and visual upgrades, such as pre-selection highlights for all element selections. Get more info about ProBuilder 4.0 in this forum thread.
Unity 2018.3 includes an update to the Terrain system with a focus on performance and usability.
It features improved tools and performance that take better advantage of the GPU. It also adds support for the HDRP and LWRP pipelines, while being backward compatible with the built-in render pipeline and the existing Unity Terrain system.
On the performance side, we added a GPU-instanced render path for Terrain. In most cases, instancing yields a dramatic reduction in the number of draw calls issued. Many of our tests saw more than a 50% reduction in CPU costs (though, of course, actual numbers will depend on your platform and use case).
Scriptable GPU tools
On the Editor side, we have exposed a script API for building your own custom Terrain tools, along with a suite of utility functions you can use to easily implement seamless cross-tile sculpting and painting operations on the GPU.
We also converted all of the existing Terrain tools to GPU operations. Aside from making these tools much faster, this also gave us larger brush sizes, improved brush previews, and the ability to paint across Terrain tile borders with automatic seam-stitching.
Multiple Terrain support
We made it easier to work with multiple Terrain tiles. In addition to seamless painting between Terrain, you can now manage the connections between neighboring Terrain automatically. Previously, this required writing a script to connect neighbors manually.
When expanding your existing Terrain, you can use our new Create Neighbor Terrain tool to quickly add matching Terrain tiles along empty borders.
New Asset types and tools
New Terrain tools and Brush Assets include heightmap, mesh stamping and clone brushes. These painting tools are currently not in 2018.3, but you can get them via our GitHub Terrain Tools project.
There are also two new Terrain-related Asset types that will simplify your workflow: the TerrainLayer Asset and the Brush Asset. TerrainLayer lets you define Terrain materials independent of the Terrain object so that you can easily track the same material across multiple Terrain objects. This helps you paint seamlessly, and makes it easier to modify materials.
The Brush represents the GPU brush shapes used by painting and sculpting tools. They are now defined by a texture and a radial falloff curve, which makes it much easier to create and tweak brush shapes.
We also added support for the R16 texture format (a single-channel 16-bit format). This allows us to avoid 8-bit quantization on our brush shapes, which can cause undesirable ‘terracing’ effects if used as a heightmap stamp.
Please send us feedback in the World Building forum!
The Package Manager gives you quick access to new Unity features by dynamically loading and updating Unity-developed features for your various projects.
As more Unity features move into the Package format, we are steadily improving the user experience (UX) to make it easier for you to discover available packages and updates, and to manage the Packages installed in your projects.
We added a large number of improvements to the Package Manager, including a better UI, which indicates the status of package labels, the ability to dock the window and easy access to both the documentation and a list of the changes. You can now also search for packages by name, and we are introducing some of the first UX building blocks that will enable you to manually add your own custom-built packages. You can see more of the latest developments and join the discussion on our Package Manager forum.
Back in September, we launched the Unity Hub 1.0, our new connected desktop app designed to streamline onboarding and production processes by offering a central place for managing your Unity projects, licenses, Editor installations and add-on components. The new Hub v1.2 release includes the ability to download and install the legacy Unity Editor builds directly in the Hub via the Unity download archive URLs. Users who depend on specific (older) versions of the Editor for their projects can now easily access them from the Hub with one click.
As more features and updates are distributed as Packages, the new Package Project Updater will help streamline the upgrade process via the Hub. This helps ensure that your project packages, scripts and Project library are compatible when migrating projects from a prior Unity release to a newer version.
A Package Update log file is also provided to help with debugging, so you can keep track of the migration status on each affected project level.
Visual Studio Code Debugger for Unity extension
We’ve updated the debugger extension for Visual Studio Code, an open-source, code-optimized editor available on macOS, Windows, and Linux. The Debugger for Unity extension provides debugging support for C# scripts in a lightweight environment, and the latest 2.x version adds various improvements, including support for the Mono 4.x scripting runtime. To get started, follow the setup instructions on the Visual Studio Code site.
If you’re looking for a more integrated and feature-rich C# editing and debugging environment, there’s also Visual Studio and Visual Studio for Mac. Check out this documentation to get started.
In 2018.3, we upgraded from NVIDIA PhysX 3.3 to 3.4. In some cases, the upgrade doubles the speed of operations such as raycasting, shape sweeping and mesh cooking. It also improves support for detecting collisions with fastly rotating objects and adds enhanced determinism ensuring the same simulation result when all the inputs are exactly the same.
We are also expanding on what’s available from PhysX in the C# Job System. This allows you to utilize most collider types asynchronously and off the main thread, allowing for significant performance improvements on multi-core hardware. The PhysX 3.4 upgrade also comes with improvements to stability and performance. Finally, there is now support for multiple worlds and C# job queries.
You can now create multiple physics scenes (as opposed to just one scene populated with all the bodies and colliders). This change enables you to specify whether a given Unity scene uses the default physics scene, or needs its own local one for both 2D and 3D physics.
Learn more about in this blog post on Unity 2018.3 physics.
Garbage Collection Control
A new UnityEngine.Scripting.GarbageCollector scripting API has been added for globally enabling and disabling garbage collection at runtime on Mono and IL2CP scripting backends. If you carefully manage your memory and have few or no allocations at runtime, you can avoid garbage collector overhead by disabling it. You can then enable it again when you can afford the overhead and call System.GC.Collect() to force it to collect garbage. Put another way, instead of having garbage collection happen at random times, you can now control when it happens.
The .NET 4.x Equivalent scripting runtime is now the default option for new Unity projects.
The old scripting runtime ( .NET 3.5 Equivalent) has been deprecated and will be removed during the 2019.x release cycle. Both scripting runtime versions will still be supported in the LTS 2018.
If you haven’t tried your project with the new, .NET 4.x Equivalent scripting runtime (introduced in 2018.2), the new features are a great reason to switch such as bringing you full TLS 1.2 support to all of the .NET class library APIs, on all Unity platforms with Mono and IL2CP.
We have worked extensively on reducing the size of your projects. Total build size (on iOS, for example) of a 2018.3 project using new scripting runtime should be very comparable to a 2018.2 or previous build with the old scripting runtime.
As well, projects that target the .NET 4.x scripting runtime will be able to use the open-source Roslyn compiler, avoiding any bugs present in the previously used Mono C# compiler.
We have standardized managed code-stripping across all platform player settings. The Stripping Level option has been replaced by a new Managed Stripping Level option. This new option is available for all platforms and both Mono and IL2CPP scripting backends.
To help you make your games as small as possible, we’ve introduced two new Managed Stripping Level options: Medium and High. These new options are only available when targeting the .NET 4.x scripting runtime.
With the managed code-stripping improvements and size improvements made to IL2CPP, builds that target the .NET 4.x runtime will be comparable in size to the old .NET 2.0 runtime.
C# 7.3 – Roslyn
C# 7.3 is now supported in projects targeting the .NET 4.x scripting runtime. This is possible because we improved compatibility with the open-source Roslyn C# compiler, bringing the latest C# 7.3 language features and reducing compilation time.
Runtime API for recompressing downloaded asset bundles
AssetBundles are archive files containing platform-specific assets (for example, models, textures, Prefabs, audio clips, and even entire scenes) that can be loaded at runtime. They can reduce the initial install size of downloadable content (DLC), ensure the assets are optimized for the end-user’s platform and reduce runtime memory pressure.
In 2018.3, we provide an API that allows you to create and manage your own asset-bundle cache system. You will still be able to deliver LZMA-compressed bundles to clients, who can then recompress them to a more runtime-friendly format (LZ4), just as with our native/built-in asset-bundle cache system.
Navigation system updates
The NavMesh Surface component represents the walkable area for a specific NavMesh Agent type, and defines the part of the scene where a NavMesh should be built. As of 2018.3, the navigation system will enable NavMeshSurfaces in Prefabs to be baked in isolation in Prefab mode. You can now also call the NavMeshQuery.Raycast method in jobs if you want to trace a straight path or find obstructions between two positions on the NavMesh. We are continuously making improvements and would love to get your input in our forum.
Asset Upload Pipeline
Prior to 2018.3, the AUP only handled textures. In 2018.3, the AUP now loads textures and meshes, but there are some exceptions. Textures that are read/write enabled, or meshes that are read/write enabled or compressed, will not use the AUP. Note that Texture Mipmap Streaming, which was introduced in 2018.2, also uses AUP.
Learn more in our recent blog post
Memory consumption is a critical performance indicator, which is especially important for platforms with limited memory resources, such as low-end mobile devices.
Although Unity has good performance tools, it has traditionally been lacking in the area of troubleshooting memory-related issues. Finding leaking memory, your largest allocations, or just poking around to see what was happening wasn’t simple.
With that in mind, we wanted to make it easier for you to understand what’s happening with memory in your project. With the new Memory Profiler, you will be able to dig into the details of every allocation.
You can use it to capture snapshots, break down both native and managed memory usage and, ultimately, make better decisions about optimizing your memory usage. This applies to investigating C# and C++ memory, the relationship between different allocations, internal Unity allocations, and working with low-memory devices.
Finally, you are also able to compare the difference between snapshots to identify memory leaks. The Memory Profiler is available in its first release as a Preview, and it will be continuously updated. We would love to hear what you think of it. If you are interested in performance optimization, we encourage you to join our profiler forum.
Learn more about how to troubleshoot memory-related issues with Unity’s Memory Profiler in this Unite LA 2018 session.
2D Isometric Tilemaps
You can now easily create performant 2D environments based on isometric grid layouts in 2018.3. You can choose from two types of isometric Tilemaps: Regular isometric Tilemaps or Z as Y Tilemaps. Selecting Z as Y Tilemaps allows you to paint different tiles at different heights on the same tile. You can use this, for example, to paint high buildings with different floors or tall objects like trees or towers.
You can also choose between grouping tiles for rendering or to render them individually. Grouping tiles to render them at once (Chunk mode) enables you to optimize performance. If you expect to have GameObjects moving in front of and behind the tiles, however, you can render each tile individually.
Additionally, you can find some utilities like RuleTiles to use with Tilemaps on our GitHub.
This is an example of a 2D game level laid out in an isometric grid. Art courtesy of Max Heyder Art (Golden Skull) available on the Unity Asset Store.
Tiles courtesy of Isometric Dungeon Tiles pack by Kenney.
2D Animation v2
The new version of the 2D Animation system brings a new workflow and more detailed control over the rigging process.
Multi Sprite: When you create your character in, for example, Photoshop, make sure that each limb or part of the character is in a different layer. Then export the file as a PSB and import the asset into Unity. You will need the new 2D PSDImporter package. Unity will then auto-generate a spritesheet.
New skinning editor: Use this new editor window to define the mesh tessellation and deformation of the sprite more precisely than before, and there are also UI/UX improvements.
The Packages for 2D Animation v2 and 2D PSDImporter will be available very soon in the Package Manager.
Background and center character, courtesy of Zoink Games.
We added several improvements to the animator including no allocation in runtime code, and batching of jobs, leading to performance improvements of 10-20%.
Unity 2018.3 comes with a number of improvements and features for our Particle System.
Set/GetParticles with offset
This script API has been improved to allow a new optional parameter called offset. It allows you to only Get or Set a sub-region of the entire particle array.
Particle Lights now support Real-time Global Illumination
When emitting lights via the Lights Module, the lights can now contribute to the scene’s Real-time Global Illumination. Simply configure the Light Prefab as you would any other light that contributes to the Global Illumination.
Flip Particle System meshes
It is now possible to use the flipping options to flip particle meshes, instead of only billboards. We have also moved the Flip U/V options out of the Texture Sheet Animation module and into the Renderer module.
Ordered mesh shape emission
Similar to how procedural shapes support non-randomized emission, meshes can now spawn particles in a predictable order. For procedural shapes such as circles, the particles spawn incrementally around the edge of the shape. For meshes, the same principle is applied, but the order of the vertices (or faces) in the mesh dictates the order.
Disable Roll (VR)
We have added a new checkbox to the Renderer module, which stops camera-facing particles from rolling with the camera. This is particularly useful for VR applications where, without this functionality, particles might otherwise look strange when the user tilts their head.
It’s now possible to define a random possibility that a burst will not trigger in order to create more unpredictable bursts of particles.
Particle Standard Shader is the new default
When you create a new Particle System in Unity 2018.3, the Unlit Particle Standard Shader will be set by default. All the old shaders have been moved to the Legacy menu.
The new Ringbuffer Mode makes it easier to create persistent effects like footprints or bullet holes by keeping particles visible after their lifetime expires and until they are replaced. In this new mode, particles can be configured as needed with two looping modes, which allow you to create effects, such as glowing embers, that continue to animate forever until they are replaced, while maintaining an overall budget for performance.
New Texture Sheet Animation modes
Unity 2018.3 brings two new modes to the Texture Sheet Animation module. The first mode plays animations at a constant frames-per-second. The second mode is based on particle speed and picks frames from the animation based on how fast each particle is traveling.
External Forces module upgrade
We have refreshed the External Forces module in Unity 2018.3. It comes with a new component, the ParticleSystemForceField, which can interact with Particle Systems to apply a variety of forces to the particles.
Particle billboards, lines and trails are all prone to suffer from self-shadowing problems because they fake 3D objects with 2D camera-facing geometry. In order to solve this, there are new shadow bias options in each component, which allow you to move the shadow away from the object slightly to prevent incorrect self-shadowing.
Sub-Emitter Ratio property
Sub-Emitters in Unity now have a new property, called Ratio, which determines the likelihood of the sub-emitter event from firing. A value of 1 guarantee that the sub-emitter will fire when triggered and a value of 0 means it will never fire. Using values between 0 and 1 allows you to assign a random probability to your sub-emitter events.
Unity 2018.3 introduces a way to control what happens when Particle Systems are offscreen. In previous versions, automatic decisions were made on whether to pause or continue simulating your Particle Systems, which sometimes caused performance spikes or wasted performance simulating offscreen effects. The new Culling Mode option lets you take control and make a better decision.
We have fixed some bugs that were preventing non-uniform scaling from working as expected. It’s now possible to use non-uniform scaling with local or world space aligned particles and get predictable results.
Legacy Particle System retirement
In order to focus on developing new features, we began retiring the Legacy Particle System in 2018.1 by removing its script bindings. In 2018.3, we finally retired the Legacy Particle System.
If this affects your older projects, you can use the Legacy Particle System Updater tool to convert Legacy Particle Systems into Particle System Components. Learn more here. As always, you can reach out to us with input or questions in our forums.
We made a number of improvements to mobile in 2018.3, including the following.
Android App Bundles
Android App Bundle, a new upload format for Google Play, includes all your game’s compiled code and resources, but defers APK generation and signing to Google Play. Google Play’s new app serving model, called Dynamic Delivery, then uses your app bundle to generate and serve optimized APKs for each user’s device configuration, so they download only the code and resources they need to run your app. You no longer have to build, sign, and manage multiple APKs to support different devices, and users get smaller, more optimized downloads.
Dynamic Resolution for Mobile (iOS/Android – Vulkan)
Added for iOS/tvOS (Metal) and Android (Vulkan) in 2018.3, Dynamic Resolution refers to dynamically scaling some or all of the render targets to reduce workload on the GPU. It can be triggered automatically when performance data indicates that the game is about to drop its frame rate 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.
Android Runtime Permissions
On Android 6 (API level 23) and above, the Android.Permission API allows you to request permission to use system features such as the camera, microphone or location when they are needed rather than when the application starts up. You can check if permissions have been granted or not and display a message that explains why you’re asking before the Android system permission dialog appears.
OpenJDK installed with Unity
By default, Unity now installs a Java Development Kit based on OpenJDK, ensuring you always get the correct JDK version.
DirectX 12 for Xbox One
For 2018.3, Unity’s DirectX 12 support is coming to Xbox One.
DirectX 12 is a new graphics API that promises to reduce driver overhead and allow better use of multi-core systems. Depending on the game, you could see some impressive performance improvements with DX12. For example, with our Book of the Dead demo we achieved a frame rate increase of 8.72%.
Initially, this will be an experimental feature you can enable. We will release more details in a blog post soon.
Native support for Daydream controllers
This update adds native support for Daydream controller tracking and button input through the Input Manager. See all of the Multi-Platform VR Features in 2018.3 in this blog post.
Haptics APIs for VR controllers
We now provide APIs for triggering haptics on the Windows Mixed Reality headset controller, Vive controller through OpenVR, and Oculus Touch controllers. We’ll continue expanding platform support and creating more feature abstractions in future releases.
Updates to AR Foundation
We recently made significant updates to AR Foundation and other XR packages. First, you can gain more control of rendering by using the Lightweight Render Pipeline on ARCore and ARKit apps built with AR Foundation. The second new feature is a set of optimized camera image APIs that allow you to efficiently access camera images on the CPU. This is ideal for developers looking to do their own image-processing for things like custom computer-vision algorithms. Finally, we have implemented support for ARKit’s ARWorldMap functionality to share session information.
XR performance testing
We recently added GitHub repositories to help you test your XR projects. The Automated Tests package contains functional, performance, and other types of automated tests for your Unity XR development. You can use the Acceptance Tests project to verify behavior of Unity configurations, compare features between Unity releases, and test for changes in performance.
TextMesh Pro is now a Verified Package in 2018.3. It ships with a new highly optimized Font Generator that enables the generation of glyphs at runtime. Called the Hybrid Dynamic Font System, it allows you to combine both static and dynamic font assets in the same project.
The FBX Exporter, which was introduced in 2017.2, is now a verified package available in the Unity Package Manager in 2018.3. You can use it to send geometry to any application that supports FBX and back again with minimal effort.
Building on the existing Unity camera system, a second real-world camera mode is now available. The new mode is based on the focal length and sensor size rather than vertical field of view controls, which makes it more natural for cinematographers and artists used to physical cameras. It also supports more natural lens effects like vignetting, chromatic aberration and flares.
Autodesk Interactive Shader support in SRP
We used Shader Graph to create an “Autodesk Interactive” shader asset to support the previous roughness setup (note that the Autodesk Interactive Shader was previously called the Stingray PBS shader in Autodesk Maya and Autodesk 3ds Max).
Visual Effect Graph (Preview)
Our new Visual Effect Graph is available in Preview in 2018.3 with HDRP. Use it to author configurable, reusable next-generation effects, ranging from simple to complex, and handle millions of particles on GPU. This easy-to-use, flexible node-based system, which is inspired by the leading tools for VFX in film, lets you create stunning effects for games and other creative content quickly.
You can drag-and-drop ready-made nodes for simple effects or you can use it to create more advanced effects. It’s also designed to be responsive, allowing you to see all your changes in real-time as you work.
The Visual Effect Graph architecture enables you to generate millions of particles on the GPU without compromising on performance.
Spaceship VFX graph demo showcased at Unite LA 2018
Every asset contains a graph with all the behavior for a standalone effect. An effect can comprise of any combination of meshes, particles and other simulation containers, all handled by Visual Effect Graph, which is also integrated with other tools like Timeline.
The Visual Effect Graph currently supports the HDRP, and LWRP support is coming later next year. We would love to hear what you think and get your feedback while we’re working on improving it. To get started visit, visit our resource page.
2018.3 introduces Configurable Falloff for punctual lights. This change to both CPU and GPU Progressive lightmappers means that even when you’re not using a Scriptable Render Pipeline, baked lights can be configured via script to use physically correct “inverse square falloff.” The result is that baked lighting will more closely resemble real-world lighting, with bright hotspots and long, slowly attenuating falloff. This means more realistic lighting and improves the overall believability of your lightmapped scenes.
We have also implemented Light Probe Deringing. You can toggle on the Light Probe Group to implement windowing on probes. Windowing can alleviate negative values and banding (common sampling issues associated with the spherical harmonic functions used by Light Probes).
Disc area lights have been introduced as a feature specific to the CPU and GPU Progressive lightmappers in 2018.3. This area light shape is useful in architectural visualizations and other applications where you might need to add round light apertures. For these cases, a rectangular light shape would not be a suitable fit. Disc lights offer other interesting characteristics such as a smaller hotspot and softer penumbra towards the edges of the light, which is another useful addition to the lighting artist’s tool bag.
In 2018.3, we are introducing the GPU Progressive Lightmapper in Preview for Windows. On machines with powerful GPUs, lightmap baking with the GPU Progressive Lightmapper will be significantly faster. We built a pure path-tracing-based algorithm on top of Radeon Rays and OpenCL for baking lightmaps in Unity, bringing performance improvements that are over 10x the CPU version. Since it’s a Preview, it has a limited feature set and will eventually support all of the lighting features in Unity.
You can try out the GPU Lightmapper from the Lighting window. It works on all modern GPUs with more than 2GB of dedicated memory, but more memory is recommended for larger lightmaps. Let us know what you think in the forum.
We’re working on adding Linux and macOS support for 2019.1.
We have added several improvements to the Lightweight Render Pipeline (LWRP) and are expecting it to leave Preview status and be ready for production in 2019.1. In 2018.3, we’ve added Physically Based Light Attenuation, Custom Renderer, and Custom Render Pass Injection.
Physically Based Light Attenuation
LWRP now uses Inverse Squared Falloff (with range attenuation) for both real-time and baked lights. This provides more accurate results in different light conditions and allows for lights with smaller ranges, which in turn improves the performance of per-object light culling. When you upgrade from previous versions to 4.1.0-preview, you will have to upgrade some light settings in your scene.
Improved shadow quality
Depth and Normal shadow bias offsets are now scaled by shadowmap texel size. This gives you finer control when tweaking shadow acne. The settings work regardless of the amount of shadow cascades and shadow resolution.
Custom render passes
LWRP now provides an easy workflow to extend its renderer. You can create a custom render passes with ScriptableRenderPass class and schedule them in the renderer. There are two ways of injecting custom render passes in LWRP.
You can also completely override the LWRP renderer by implementing an IRendererSetup. A renderer setup is a script that can be attached to a camera, which executes all ScriptableRenderPasses registered in it. You can use this to implement different rendering strategies such as Forward+ or Deferred Rendering.
You can find documentation for LWRP by clicking View Documentation in the Package Manager window. This takes you to the LWRP-specific documentation site. We’ve added documentation for some shaders (Lit and Simple Lit), and we’re planning to document all of LWRP for 2019.1.
We added improvements when shading point and spot lights in GLES2, and improvements for GPUs that support HSR.
For more information, please check the LWRP changelog available in the PackageManager UI. You can also get our Boat Attack demo, which was created to aid the testing and development of LWRP.
Comparing Built-in render pipeline to LWRP
The Built-in render pipeline culls the lights at a per-object level. It shades each light in a separate render pass. LWRP also culls lights per object. However, it shades all lights in a single pass, which results in fewer batches.
The screenshot below shows a scene from our Angry Bots 2 demo. Here, we’re comparing real-time lighting and shadows in the Unity built-in render pipeline (left) and LWRP (right). We’re using the forward rendering path in the Built-in render pipeline (LWRP only supports forward rendering).
Both scenes use the same light setup:
- 1 Directional light (soft shadows)
- 2 Point lights (no shadows)
- 2 Spot lights (soft shadows)
To match the lighting in the Built-in render pipeline, we increased the Point and Spot light intensity in the LWRP scene. This didn’t cause any extra performance cost.
High-Definition Render Pipeline (HDRP) is dedicated to high-end visuals and games. In the 2018.3 release, we have added and improved several features to achieve better visual quality and an improved workflow for artists. This version is also more stable and includes better support for Metal for Mac, Vulkan for PC, Xbox One and PS4.
As well, we have added preliminary support for VR and MSAA. The UI has been updated for the various inspectors of HDRP elements: Camera, Lights, Reflections Probe, and Material. There’s also a new lighting model, so you can author more complex materials.
Note: This release comes with package 4.1.0 of HDRP in the HDRP template. To take advantage of the features listed here, we recommend that you upgrade to package 4.6.0 after installing the template.
Platform support, performance, and stability
2018.3 adds better support for Metal and Vulkan APIs, including fewer artifacts and better performance. Artifacts still remain in fog and decals on transparent objects, but the overall experience has been greatly improved compared to previous versions.
Preliminary support for VR is now available. Please read this article for details on how to set up your project. VR requires forward-rendering mode. Camera-relative rendering is still not supported, and there are currently some issues with lighting and volumetrics.
Coupled with VR and forward rendering, this version adds preliminary support of MSAA. All effects are currently handled with MSAA (for example, SSAO, Contact shadow), except Screen Space Reflection. Note that MSAA adds extra cost to the rendering, so it should be used with care.
Unity 2018.3 provides better HDRP performance for PS4 and XBox One. It is now possible to execute several effects with async compute pipeline: Screen Space Ambient Occlusion, Screen Space Reflection, Voxelization of Density volume, Light culling, and Material classification. All these effects can be executed with parallel of the shadow-rendering pass.
The forward-rendering path has been improved by performing a technique called “scalarization.” This technique is specific to AMD GCN architecture used on consoles. To read more about it, see this blog post by one of the members of the HDRP team.
Lastly, you can now have more fine-grained control of which shader variants are included in your build, via the Render Pipeline Settings. If you exclude variants you know that you won’t use, you can drastically reduce the build time. As well, more shader variants are rejected.
Improved UI and Camera control
The HDRP UX has been simplified. In addition, you now have more control through FrameSettings. Since FrameSettings now supports the same override system as post-processing, it can inherit values from RenderPipelineSettings and override them. The camera now supports the Physical camera parametrization of Unity’s built-in render pipeline.
In the Light and Reflection probe Inspectors, there is now a toggle for advanced settings, so the UI is not cluttered with a lot of default parameters.
Improved quality and control of current features
Volumetric fog rendering has been improved with a technique called “deep compositing.” To read more it, see this blog post by one of the members of the HDRP team. This technique enables you to better compose density volumes that overlap each other with the global fog. In addition, volumetric fog can now fall back with an exponential fog at far distances and support activation of Height Fog. Parametrization and control of volumetric and density volume have become more artist-friendly. Lastly, lighting of the volumetric voxels performance has been improved.
The Shadow system is now more stable and offers more control. There are three levels of quality for shadows: Low, Medium and High. These map to different filtering algorithms (PCF and PCSS in this version).
Note: You can only switch between the different quality modes when you use the forward-rendering path. The deferred path defaults to Low quality. Low quality is the default mode for consoles for now.
The memory management of shadow map with a shadow atlas has been improved. There is now a budget for a number of visible shadows on screen. In addition, the shadow framework now scales the shadow map resolution according to the distance, and it automatically resizes shadows to fit in the atlas if there is no room. This means that shadows will always be displayed – but they will have lower quality when they don’t fit in the shadow atlas.
Contact shadows can now be enabled independently of the shadow map. Contact shadows are supported for directional, point or spot light, but you can currently only use one at a time. We have also improved quality and performance.
To help you debug shadows, we’ve added a new set of tools to the Render Pipeline Debug windows. You can now display shadows for each individual light, the shadow atlas, the scaling factor of each shadow map, as well as shadow masks.
Decals have been enhanced with a per-channel selection mask. With this, you can create decals that affect only a subset of material properties. For example, you can make a decal that only modifies the normal property of a material, the metallic surface, or the smoothness. There are now two modes:
- BaseColor, Normal, and Smoothness
- BaseColor, Normal, Smoothness, Metal and AO (more expensive)
We’ve also improved Decal gizmos: You can now control depth bias and draw order.
With the forward-rendering path, Decal now correctly affects the normal buffer, which allows it to correctly affect Screen Space Reflection.
We have added additional controls to Lights. For example, they now support the physical units EV100 and Lux At a distance, in addition to Candela and Lumens. The HDRI sky can use Lux values. For directional lights, you can now control the shape of the highlight to better mimic the sun disc. Point and Spot lights have a softer attenuation. Light explorer now supports every light type in HDRP.
Improvements to the reflection system
2018.3 also brings Screen Space Reflections (SSR). With this, you can enable reflection on every smooth surface. Rough surfaces fall back to regular Reflection Probe / Planar Reflection. You can tag Materials to not receive SSR.
Note: This effect is currently expensive when using a large resolution.
This version also introduces Planar Reflection, which you can use to get high-quality reflections on planar surfaces. The planar probe component behaves exactly as the reflection probe component, except it is rendered in real-time. They have the same set of controls as Reflection Probes.
Reflection control: The Reflection Probe and Planar Reflection UI has been updated to provide a better workflow for artists. You can now control the FrameSettings for the rendering of the real-time reflection.
Better feature parity with Built-In render pipeline
With Light layering, you can tag lights and objects, so only objects with the same tags receive lighting from a specific light. It is also available in the built-in render pipeline. In HDRP, the lighting architecture is different, which has required a revamp of this feature. In this version, we introduce light layers that work with Punctual lights, Area lights, Reflection Probes and Planar reflection. This first version supports up to 31 lights. Currently, shadows are not handled correctly.
Terrain is a feature of the Built-in render pipeline that was not compatible with HDRP. This version introduces the Terrain Lit shader, which enables compatibility with the Built-in Terrain system. It supports up to eight layers in a single draw call. The Terrain Lit shader uses the same lighting model as the Lit shader, but only offers a restricted set of options that are available in the LayeredLit shader. Note: There is currently no tessellation or displacement supported in Terrain Lit shader.
Rendering particles in the built-in render pipeline is supported via the Particle System. In HDRP, only unlit Particle System shaders are supported. To use lit particles and have effects author on GPU, this version supports the new Visual Effect Graph, which can use the Lit shader as well as a simplified version called “Simple Lit.” This simpler shader gives better performance for drawing large amounts of lit particles.
More debugging tools
Debug tools are always important because they enable you to track issues and keep monitoring performance. In this version, we have added several new debug modifications to the Render Pipeline debug windows:
- Display of individual shadow/Shadow Atlas/Shadow scaling factor
- Override of emissive color
- Screen-Space Reflection debug mode
- Luminance meter mode
- Ability to disable Light by type
- Freeze camera culling, so you can check what objects have been culled through the camera frustum
- Display light volumes
HDRP now supports Shader Graph, which will become the main solution for future development. The Lit master node is available as a Shader Graph version, and as a built-in shader version (Lit, LayeredLit, TerrainLit). All other shaders are available only as Shader Graph versions. Future shaders will also be built using Shader Graph.
The PBR master node is based on the Lit shader. It uses a restricted set of features, which it shares with LWRP, so you can author cross-pipeline assets. 2018.3 adds support for decals and light layering to the PBR master node.
The Lit shader is now available in Shader Graph. This shader unlocks the full feature set, including coat-mask, iridescence, translucency, subsurface scattering, and anisotropic. However, the surface gradient for accurate normal blending is not yet supported. Also, tessellation is still not supported in this version of Shader Graph.
Note: The wind effect has been disabled from the built-in Lit shader, and enabled in Shader Graph. If you want to simulate wind or any other vertex animation, you must use Shader Graph.
We have also added a Fabric shader to Shader Graph. With it, you can author fabric material with a soft look, and fake the scattering of fibers. The Fabric master node supports two lighting models: CottonWool and Silk. Use these to create a wide variety of cloth. The implementation of CottonWool is based on recent research from Sony Pictures Imageworks, presented at Siggraph 2017. The Silk version is based on GGX anisotropic.
The StackLit shader has been added to Shader Graph. Note: The built-in StackLit was removed from package 4.4.0 in favor of the Shader Graph version, which we introduced in the same package.
The StackLit shader is an improvement over the Lit shader, which focuses more on quality than on performance, making it unsuitable for some games. Compared to Lit, StackLit more accurately handles the coating of surfaces. This is thanks to the research of Laurent Belcour from Unity Labs, which we presented at Siggraph 2018: “Efficient Rendering of Layered Materials Using an Atomic Decomposition with Statistical Operators.” It has a new parametrization to control the highlight: hazy parametrization. This was introduced in the paper: “A Composite BRDF Model for Hazy Gloss.”
Lastly, this shader allows you to mix all features together without restriction. For example, you can have anisotropy with subsurface scattering, iridescence, and hazy parametrization.
Furthermore, this version fixes a lot of bugs reported by our awesome community. The complete list of fixes, changes, and additions is available in the changelog on GitHub.
Improvements to video and removal of the legacy MovieTexture feature
Unity 2018.3 includes faster texture updates. This helps eliminate all the time taken on the main thread for doing texture upload and consumes less time in the graphics thread. Platforms such as HoloLens and slower Windows versions should especially benefit from this.
We also added audio resampling, which enables users to change the speed of videos and have the audio change speed accordingly and stay in sync.
In Unity 2018.2, we began the process of removing the legacy MovieTexture feature. If your project still uses MovieTexture, you should upgrade it to use the VideoPlayer, introduced in Unity 5.6. Since the VideoPlayer is fundamentally different from the MovieTexture approach, it may not be possible to provide an automatic upgrader tool. Learn more about the MovieTexture deprecation in our forum.
There are many new features and updates for Performance Reporting. So many in fact that we’ve renamed the service “Cloud Diagnostics” to better capture the scope of what it can and will do. Most important of all, these features are no longer limited to Unity Plus and Pro users! All users can access them. To learn more, check out this blog post.
First, reports sent by games built using 2018.3 can now contain debug logs and custom metadata. Both of these features will help you better understand the scenario that led up to the report being filed.
We’ve also introduced a completely new report type. While previous report types – crash, exceptions – were machine generated, User Reports let you collect feedback directly from your end users. They can send you useful information such as screenshots, saved games, videos or anything else you find useful to help improve your user experience. All of these reports are collected and aggregated in Unity’s Developer Dashboard.
With UNET being deprecated, we’ve begun to provide access to new multiplayer-enabling features. A new network transport layer is available in an open alpha. It’s lean and built for an ECS-style implementation for future Unity versions. Furthermore, two key multiplayer services are currently in closed alpha. First, Game Hosting Servers let you leverage a cloud-powered fleet running headless instances of your game. Second, Matchmaking lets you not only group your players together but works with Game Hosting Servers so you can automatically ramp your cloud utilization up and down with player demand in real-time.
Project Tiny is a new modular Unity runtime and editor mode to build games and experiences that can load instantly and without install. Project Tiny gives developers the tools they need to quickly create quality 2D Instant Games and Playable Ads that are small in size and have a blazing-fast startup on a wide range of mobile devices.
Project Tiny is delivered as a package called “Tiny Mode.” To install it, open the 2018.3 Package Manager, enable Preview Packages, and install Tiny Mode. It can be used with all Unity licenses – Personal, Plus, and Pro. You can find the Tiny User Manual, API documentation and sample projects in the Preview package download. More information, plus training videos, can be found on the Solutions page and in the Project Tiny Preview blog post.
Visit the forums for more information or to provide feedback. We look forward to hearing what you think!
At Unite LA in October 2018, we announced the first release of the FPS Sample project, a multiplayer first-person shooter game.
A team of just six experienced game developers at Unity used the latest bleeding-edge features in 2018.3 on this large-scale project which enabled them to provide R&D teams with insightful feedback during the beta phase.
Following one of the team’s core principles, the project runs on what is often referred to as “vanilla” Unity. In other words, it doesn’t require any custom builds or Asset Store packages. The game sample project includes everything from source code and artwork assets to sound effects built on the latest version of Unity. The FPS Sample provides a great opportunity to check out some of the 2018.3 features in action. You are, of course, also welcome to use the full project as a framework or starting point for your own online shooter game. What’s more, all the assets are available under the Unity Companion license, which means you can even use it for Unity-based commercial projects.
Watch Lead Technical Artist, Martin Kümmel Vestergaard and Lead Programmer, Peter Andreasen explain the core principles of the FPS Sample and how the project benefits both Unity R&D and Unity users:
The team plans to continuously update the FPS Sample to run on the most recent versions and to adopt the latest features, which will help us gather useful feedback.
To get the project and see the 2018.3 features in action, go to the project page on GitHub for instructions on how to download and run the project.
The full release includes 45 features, 250 changes and improvements, and 1915 fixes. To find all the details, as always, refer to the release notes for the full list.
The TECH stream, which includes all the latest features, has three major releases a year. This year’s TECH streams are versions 2018.1, 2018.2 and 2018.3, each of which adds new features and functionality.
2018.3 is the last in the 2018.x TECH stream cycle, and it will become the LTS stream with a new version number (2018.4) when the new TECH stream begins with 2019.1. This marks the point at which the two-year support schedule begins.
Unlike the TECH stream, the LTS stream will not have any new features, API changes or improvements. Instead, it will address crashes, regressions, and issues that affect the wider community, console SDK/XDKs, or any major changes that would prevent a large number of developers from shipping their games.
Whereas the TECH stream will receive a weekly release with bug fixes, the LTS stream will receive regular bug fixes every other week. The LTS stream is thus for those of you who wish to continue to develop and ship your games/content on a stable version for an extended period. The TECH stream is for anyone who wants to use the latest features and those who want to be up to date with the latest Unity offering.
If you are curious to see what’s coming next, Unity 2019.1a is the first Unity alpha available to everyone.
Although there is a higher probability that you will encounter bugs than in a beta version, as an alpha user, you will get access to new features sooner, be able to test the compatibility of the new version with your projects, provide feedback, and get problems in Unity fixed sooner.
As an alpha user, you will also get to connect with our experts, share insights with experienced members of the Unity community, and influence the future of Unity with surveys, feedback and the chance to be invited to user roundtables.
How to get started
To begin, download the latest prerelease version of 2019.1. New incremental alpha iterations and features will be published once a week until all major content scheduled for this version is included and the transition to beta is made.
The information in this guide to being an effective beta tester applies to alpha users as well, and it gives you an overview of what to consider. If you would like to receive occasional emails with news, updates, tips and tricks, please sign up below.