A tour of Unity 2018.1

The first public beta of Unity 2018.1 was recently released, introducing many new and exciting features to play with. I have gone through the release notes one by one and this post is my attempt at highlighting the most notable ones that I believe will make our lives happier as developers.

Scriptable Render Pipeline

The Scriptable Render Pipeline (commonly referred to as SRP) is a new rendering architecture. It provides a flexible way to customize the rendering pipeline via C# code and material shaders suited to your needs. Unity will provide two default templates, the Lightweight and High-Definition pipelines, optimized for different scenarios (general cross-platform projects and high-end PC/consoles, respectively).

You can find the official feedback thread here.

Shader Graph

We knew Unity was working on its own shader editor, but I do not think we knew it was coming this year. Definitely a very nice and welcome surprise! If you are familiar with Shader Forge or Amplify Shader Editor, Shader Graph will be immediately intuitive to you. It makes it possible to create shaders visually by connecting nodes in a graph with the ability to preview every intermediate step. The tool works exclusively with SRP and will not be compatible with the legacy rendering pipeline.

Shader Graph is being actively developed. You can find the official feedback thread here and the official Github repository here.

C# Job System and the Entity Component System

These features will be introduced in a later beta (although the core C# jobs functionality seems to be available already) and they are the ones I am personally most excited about. The best starting point to learn why these features matter is this Unite Europe 2017 talk by Joachim Ante. Together with the recent moves of Mike Acton and Andreas Fredriksson to Unity, the future looks bright for the engine on the performance side of things.

Object presets

This is a quality-of-life improvement to the editor that adds a Presets icon to the inspector of components and importers. Presets are assets that contain the saved properties of an Object and can be loaded into other Objects of the same type. Default presets can also be defined, which will be applied to new components and importers when they are created. This feature has an associated API that allows you to extend the functionality as needed.

You can see how presets work in practice in this video.

Added experimental player loop API

There are two new classes in the UnityEngine.Experimental.LowLevel namespace, PlayerLoop and PlayerLoopSystem, that allow us to change the order in which engine systems are invoked and even add new systems or remove existing ones.

This is a particularly interesting feature for advanced users, making it possible to control the update loop of the engine in a more fine-grained way.

Added IL2CPP backend to standalone Windows and Mac builds

Sweet! I love the focus on performance in 2018.1.

Experimental APIs for custom sprite editors and sprite animation

You are now able to create your own sprite editors; it will be interesting to see what the community comes up with. The animation-related feature looks like it is mostly groundwork for future work on this area.

Multithreaded 2D physics

This will give your 2d physics a boost by splitting the work across several cores. You can find some test scenes in this tweet by Melvyn May, the programmer responsible for 2d physics at Unity.

The next planned step is to bypass the traditional GameObject-based architecture and leverage the new Entity Component System to reduce the overhead even further.

New build report API

BuildPipeline.BuildPlayer now returns a BuildReport object with information like the files output, the build steps taken and other platform-specific data.

Added ‘clear on play’ button to the profiler window

Very useful!

Improvements in FBX importing

Support for aim, parent, point, orient and scale constraints in FBX files has been added.

Removed support for legacy particles, Windows XP and MonoDevelop

I believe most of us will agree in that these are all generally good things, considering superior alternatives have existed for quite some time.

And there is more! If you are curious about the features not mentioned here, it is worth taking a closer look at the complete release notes.