As we announced in March, we’ve put extra resources into beta testing Unity 5.4 so we can deliver the highest level of quality and stability. We couldn’t have done it without the help of our beta users: thank you for your feedback and bug reports! We’d like to show our appreciation and reward for your efforts; for more details, see further down the post.
As well as spending recent months polishing Unity 5.4, we’ve been hard at work improving Unity 5.3.x to make it a rock-solid platform for the projects you have in production.
If you’re in a hurry, here’s a quick overview of Unity 5.4:
Now read on for the details:
Unity 5.4 takes our multithreaded rendering support to the next level. Depending on your project and the platform you’re building to, it can significantly improve your frame rate.
Building on the work we did to take particles, sprites, flares, halos, lines and trails off the main thread in Unity 5.3, we’ve introduced parallel command list generation. Instead of building one graphics command list on the main CPU core scripts used by physics and scripts, work is reallocated to multiple CPU cores, removing potential bottlenecks and enabling complex scenes to run faster.
Fewer draw calls means better performance. By implementing GPU instancing support, we’re allowing you to render vast numbers of identical geometries that share the same materials with very few draw calls.
GPU instancing support is available on Windows (DX11/12 with Shader Model 4.0 and up), OSX, and Linux (OpenGL 4.1 and up) as well as on PlayStation 4 and Xbox One.More platforms are in the pipeline, so stay tuned.
The scene contains 3 types of rock mesh. Each rock is tinted with a different gray scale color using a material property block. The first scene uses an instanced version of the standard shader, the second scene uses the built-in standard shader. The data is captured with 5.4 beta on Windows / D3D11, with an Intel Core i7-4980HQ@2.8GHz CPU & an nVidia GeForce GT 750M GPU.
If you’re a graphics programmer building your own shaders, 2D Texture Arrays can help you when you’re optimizing large scenes and implementing rendering systems. They work by allowing the GPU to treat 2D textures that share the same size and format as a single object.
We’ve also improved a series of low-level graphics features. Compute shaders can now be chained together via DispatchIndirect, compute buffer counters have been improved, and debug information can be used for compute shader debugging. You can perform fast texture copies with a new CopyTexture function, and support for uniform arrays as shader parameters has been added. On Metal, OpenGL, and D3D9 platforms we’ve implemented Alpha-to-coverage, and on iOS we now support multithreaded rendering for Metal graphics. Finally, image effects can be applied on a scene view camera with a new ImageEffectAllowedInSceneView attribute.
Unity 5.4 includes new sizing controls for particles, allowing you to control their width and height independently and to control mesh particles’ full 3D form.
We’re also rolling out a new trigger module, which allows you to modify particle properties inside a list of colliders. In its simplest form, you can destroy particles when they touch the colliders, but, by using a custom scripting callback, it’s now also possible to modify all particle properties. You can see this in action in the viscous volume effect below.
Large particle systems can now be lit more realistically with Light Probe Proxy Volumes (“LPPV”). It’s a way of getting baked lighting information into large dynamic objects that can’t use baked lightmaps.
LPPV works by generating a 3D grid of interpolated light probes inside a bounding volume and allows you to specify the grid resolution. By doing so, you can add a spatial gradient to probe-lit objects. LPPV isn’t just useful for particles; you can also use it on large dynamic objects.
Finally let’s not forget about the Cinematic Image Effects (like Screenspace Raytraced Reflections, Depth of Field, Tonemapping and Colour Grading and more) available as an open source package from the Asset Store (and open for contribution on our repo). Cinematic Image Effects were put to good use in our Adam demo.
In 5.4, we’ve also added motion vector support. Motion vectors track frame-to-frame motion at pixel level, and can be utilized to great effect when creating your own post-processing effects such as motion blur and temporal anti-aliasing. As an example, the current beta of our Cinematic Image Effects package makes good use of this feature to create a convincing motion blur effect:
Unity 5.4 now includes built-in and optimized rendering support for OpenVR (SteamVR/HTC Vive), Oculus Rift, Gear VR, and Playstation VR platforms. Through a single API you can easily build for multiple platforms with device-specific tweaking kept to a minimum.
To enable this, we’ve refactored the VR subsystem to eliminate redundant code that duplicated functionalities across VR devices. On the performance side, we’ve added the Optimized Single-Pass Stereo Rendering feature (previously called Double Wide Rendering), so now both viewports are rendered in a single pass, to help sustain high frame rates.
If you’re looking to get started with VR, these handy tutorials and the associated free assets will help you get up to speed quickly.
Finally, as announced at Google IO, Unity will be natively supporting the new Daydream platform. If you can’t wait for the native integration, go to the Google developer portal and get the Google Daydream VR Dev Kit for Unity.
In case you are new to Unity, IL2CPP is our scripting backend that converts IL (Intermediate Language) code from scripts and assemblies in a Unity project to C++ code which is then compiled using platform native compilers. The obvious benefit is a performance gain when Unity runs your scripts (game logic). Introduced with Unity 5.0 and initially implemented for use with WebGL, today IL2CPP is also fully supported on iOS, PS4, and PS Vita, with experimental support available for Windows Store/UWP and Xbox One.
Furthermore, today we’re excited to announce that we removed the experimental tag from IL2CPP for Android and fully support it!
In 5.4 we’ve focused our energy on reducing build time for WebGL, by caching IL2CPP artifacts and offering an option for using a pre-built runtime components in Development builds, so only user code will need to be rebuilt. Your first build will still take as much time, but subsequent ones will be incremental, hence much faster (and remember that you can easily offload the build to Cloud Build - see below).
WebGL is fully supported and a viable build target you can use to make web games right now. We’re thrilled to see developers adopting WebGL as a deployment option for their games, for example check out Nordeus' story about Bringing Top Eleven to WebGL presented at Unite Europe 2016. They provide useful tips to get to WebGL and … [*Spoiler Alert*] announced a +30% increase in revenue!
We’re also excited to announce that WebGL 2.0 is available in Unity as an experimental target. While the WebGL 2.0 spec is still a draft and not yet in current releases of the web browsers, you can get a head start with Firefox or Chrome, by enabling it in Unity. Simply uncheck the “Auto Graphics API” property and add “WebGL 2.0” at the top of the list:
If you’re developing on a Mac with a Retina display, the Unity editor will now look great on your monitor. HiDPI support is also in the pipeline for Windows users.
Additionally, if you’re developing for a high-resolution target device, the editor game view now allows you to zoom in and out to fit the entire resolution on-screen. It works on both the OSX and Windows versions of the editor.
With Cloud Build you offload the process of compiling and creating builds across platforms, speeding up iteration time within your team. With Unity 5.4, we’ve simplified setup by enabling Cloud Build config right from the editor. Additionally, you can now view the status of Cloud Build right from the Services tab saving you a roundtrip to the dashboard. Convenient!
Unity Performance Reporting automatically collects application errors, across devices and platforms, so you can find and address issues in real time. With Unity 5.4, Performance Reporting come fully integrated in the editor with a 1-click activation. It takes seconds. Watch:
Error logs will then appear in your developer dashboard:
This is just the beginning. Performance Reporting aims to be a suite of tools to help you better understand the inner workings of your games. Exception reporting is the first feature we’ve built, but there’s more to come (check our recent blog post for more information).
We’re rolling out major Unity Analytics feature updates with the release of Unity 5.4. You can view ads revenue and ARPDAU (Average Revenue Per Daily Active User) through the new Analytics Dashboard, track real time game events using the Livestream feature (Unity Plus and Unity Pro only), map critical game metrics of your choice using the new Heatmaps feature, and conveniently download all the data to build customized insights with the Raw Data Export feature (Unity Pro only).
We’ve added Amazon Appstore support to Unity IAP, our cross-platform in-app purchasing technology. Use Unity IAP to integrate support for multiple stores through one API.
As announced previously, and as a consequence of browser vendors’ move to the plug-in-free Web, Unity 5.3 was the final Unity release to support Web Player deployment. You can, of course, continue to use Unity 5.3.x to ship Web Player games should you wish to. But for now, it’s time to look at WebGL!
Given how quickly iPhone users update to the latest version of iOS (“Games by the Numbers” Q2 2016 report showed 99.2% of iOS game installs on iOS 7.x or above), it makes abundant sense for us to remove iOS 6 from the list of build targets for this release of Unity.
We’re also moving on with a tear in our eye from supporting PS3 deployment, allowing us to concentrate on helping you build even more great PS4 games.
Thank you to everyone participating in the beta program. We want to recognize your effort and thank people who took the time to upgrade their existing projects and report issues. You are using Unity in so many different ways, so regression bugs are the hardest ones for us to catch.
So, everybody who submitted a valid bug will receive an email to claim their Unity 5.4 beta t-shirt. On top of that, we still have the draw for 100 vouchers for $100 on the Asset Store.
Watch your inbox!