Audio

Mix and master all audio within Unity by tweaking all parameters during edit mode and play mode.

VU meters for the outputs of all AudioGroup and at attenuation points within the AudioGroup.

Allow AudioSources to route their signal into any AudioMixer.

The audio output of one AudioMixer can be routed into any AudioGroup of any other AudioMixer, allowing complex re-configurable Audio processing.

Audio "Sends" and "Receives" can be inserted anywhere into the signal chain of an AudioGroup.

The attenuation of an AudioGroup can be applied at any point in the AudioGroup (allowing pre and post fader effects).

Snapshots of mixer state (on all parameters) can be created for AudioMixers. These snapshots can be interpolated between during play through a set of per-parameter transition curves.

Snapshots can also be weighted blended (2 or more snapshots).

Any parameter (volume / pitch / effect parameter etc) can be exposed via a name to the runtime API allowing very precise tweaking of any parameter in a mixer during game play.

Mixer "Views" can be created so that complex mixer hierarchies can be narrowed down in the GUI allowing focus on tweaking certain parts of the mix (music / foley / etc).

AudioGroups can be Soloed, Muted and have their effects bypassed.

Built-in side-chain volume ducking.

Support for custom high-performance native audio plugins through a new SDK.

Reverb Zone Mix slider and curve in order to be able to control amount of signal routed to the global reverb associated with Audio Reverb Zones. This allows setting up natural transitions between near field and distant sounds and also allows routing 2D sounds into the reverb.

Rewritten Audio asset pipeline and AudioClip backend.

AudioClip settings now support multi-editing.

Per-platform compression setting overrides for AudioClip import, much like texture importing. This includes an API change. Users will now be able to enable override settings per platform and have unity have different compression characteristics for different platforms.

Audio transcoding and packing now happens in a separate tool, removing risk of crashing Unity on import.

No double loading of sounds during import processing.

Better handling of huge audio files. If a sound is set to streaming, it is never fully loaded in the editor or player now.

Editor profiling of Audio is now accurate and reflects how it would be in the game.

Streaming (file handle) resources are now freed immediately after playback of sound.

Much improved audio formats in terms of memory and CPU usage. The Format property no longer refers to a specific platform-specific file format, but to a encoding method (Uncompressed, Compressed, ADPCM).

The audio data of an AudioClip can now be loaded on demand by scripts, and loading can happen in the background without blocking the main game thread. Memory management can now be performed much easier of AudioClips in the project.

Improved Audio Profiler with better statistics and detailed information. To view it, open the Profiler window, click the Audio pane and press the “Channels”, “Groups” or “Channels and groups” button..

Improved Audio Profiler

AudioSettings.GetConfiguration / AudioSettings.Reset API as an alternative to the now deprecated AudioSettings.outputSampleRate/AudioSettings.speakerMode property setters and the AudioSettings.SetDSPBufferSize function. The new API allows querying the current configuration and applying all changes at once.

Notification callback AudioSettings.OnAudioConfigurationChanged(deviceChanged) callback which can be used to get notifications when sound system reinitialisation happens. This can then be used to adapt audio device settings further or reload volatile AudioClips such as generated PCM clips and restore other audio system state.

Consoles

Unity 5.0 has day one support for XBox 360, XBox One, PS Vita, PS3 and PS4, with Wii-U arriving later in the spring.

A custom editor is no longer required for any console. The console extensions are compatible with the general Unity editor!

Many developers are already building their games with Unity 5.0 on console having taken part in a Beta release program.

Editor

Unity editor is now 64-bit!

A separate 32-bit installer is available for Windows; on Mac OS X we only ship 64-bit now.

Note that this affects native plugins used in the editor, which now also need to be 64-bit.

Supports incremental build, which only rebuilds AssetBundles that actually change.

AssetBundle dependencies don't force the rebuild of all the bundles in the dependency chain.

Provides AppendHashToAssetBundleName option to allow to append the hash to the bundle name.

Provides AssetBundleManifest which can be used to get the dependent AssetBundles at runtime.

By default includes type tree in the assetBundle on all the platform except metro.

New Project Wizard dialog.

Recent projects list shows "Last Saved With" version number for each project (if available - this information is only saved starting with 5.0).

Timeline Profiler:

New view in the CPU Profiler that shows the frame samples laid out on a Timeline. Each thread has its own timeline; This is mostly useful for multi-threaded profiling.

Timeline Profiler

Version Control: Scene and Prefab Merging

Command line merge tool that understands the scene and prefab formats in order to do semantic merges.

Merge tool integration with Unity's existing version control integration. Can be enabled from EditorSettings.

Plugin Inspector: new native plugin importing system. You're no longer required to place platform specific plugins into special folders like Assets/Plugins/iOS, Assets/Plugins/X64, etc. From now on, you can place them anywhere.

You can set platform compatibility settings by clicking on the plugin (files with extensions *.dll, *.so, etc, and folders with extension *.bundle), this include both managed and native files. Plugins can be set for “Any” platform, “Editor only” or a specific platform.

Platform specific settings can also be set, e.g. CPU type. Different platforms may have different settings.

Changes to lights marked as "Dynamic GI" and skylight changes are picked up automatically.

Emissive surfaces can emit light into GI at runtime. Emissive colors can be changed affect static and dynamic objects in realtime.

Material changes can be triggered via DynamicGI API.

Directional lightmaps can now be baked in a "directional specular" mode (which allows materials to retain their specular look) or in a cheaper "directional" mode (materials get a normal-mapped diffuse look). "Non-directional" mode is the cheapest and results in a flat diffuse appearance. All 3 options are available for both baked and realtime lightmaps.

New Lighting window

Single place to specify lightmapping, GI and scene render (ambient/reflection/fog) settings.

UI grouped by logical areas.

When real-time lightmaps are disabled and baked lightmaps enabled, indirect lighting of real-time lights is automatically baked into baked lightmaps. If you don't want this behavior, set indirect lighting to 0.

HDR workflow improvements:

HDR scene view. When main camera is HDR, then scene view rendering is done in HDR too using the same Tonemapper settings as the main camera.

This means that ShadowCollector shader passes aren't used for anything; you can just remove them if you had any.

Camera’s DepthTexture is not generated using shader replacement anymore. Now it is generated using same shaders as used for shadowmap rendering (ShadowCaster pass types). Camera-DepthTexture.shader is not used for anything now.

Normal-offset shadows to help reduce self-shadowing artifacts (“normal bias” setting on Light). Manually written shaders should use TRANSFER_SHADOW_CASTER_NORMALOFFSET in the vertex shader, which is similar to the old TRANSFER_SHADOW_CASTER but it requires v.normal to be present.

Most platforms now internally use floating point (RFloat) format for point light shadows, instead of custom encoded ARGB32 format. Saves shader instructions and has better precision.

Particles: Added a Circle emitter (with an option to specify an arc) and one-way Edge emitter.

LOD Group was improved. A "fade mode" can be set on each level and a value of "how current LOD be blended/faded to the next LOD" will be passed to shader in unity_LODFade.x.

Exposed WheelCollider.sprungMass to C# as a read-only property. Sprung mass can have a wide range of applications like being able to configure suspension springs using natural frequency & damping ratio or having custom forces added to suspension based on the weight supported by particular wheels.

Added #pragma shader_feature; similar to multi_compile but unused ones are removed from the game builds. If no materials use a particular shader feature variant, shader code for it is not included into game data.

#pragma shader_feature can be provided just one parameter, e.g. #pragma shader_feature FANCY_ON. This expands to two shader variants (without and with the parameter defined).

Can specify vertex- or fragment-only shader variants. For example, #pragma shader_feature_vertex A B C will add 3x more shader variants, but to the vertex shader only.

Shader variants for unused lightmap modes aren’t included into build. E.g. if you don't use directional lightmaps in any of your scenes, then shader variants that handle directional lightmaps will be removed from game build data. No need to manually add "nolightmap" and friends to shader code now.

Single CGPROGRAM block can target multiple "shader models" at once. For example, you can base it for SM2.0, but have fancier multi_compile variants that require SM3.0. Syntax:

#pragma target 3.0 // base is SM3.0

#pragma target 4.0 FOO BAR // FOO or BAR require SM4.0

Custom Shader GUI can now be defined by implementing the IShaderGUI interface instead of deriving from MaterialEditor. Using this approach makes the custom shader GUI show within the inspector for Substance materials.

Standard Assets

A new suite of Standard Assets including cameras, first and third person controllers, car controller, aeroplane controller and sample particle systems.

A cross platform input helper.

New mobile control prefabs based on the new UI system.

Image effects have been converted to C#.

New sample project based on the Standard assets shows how to best utilize them.

Unity Download Assistant

As part of optimizing download, we're shipping Unity 5 as multiple installers. The Download Assistant lets the user select which components to download and install.

The individual installers can be downloaded separately and installed silently, as described in the documentation.

WebGL

WebGL support: a new target in the build player window!

Currently marked as “Preview” state; official support for latest Firefox & Chrome.

Provide AssetBundle.LoadAssetWithSubAssets***() which loads the asset with the sub assets.

Provide AssetBundle.AllAssetNames() to return all the assets in the assetBundle.

Support type tree incremental build check.

Asset Import

Unify global scale while importing FBX models.

Asset Management

Resources.LoadAssetAtPath is no longer available outside of the Editor.

Audio

AudioClip.isReadyToPlay is now obsolete and replaced by AudioClip.loadState.

AudioSettings.outputSampleRate and AudioSettings.speakerMode can now only be read from, because setting it required a complete restart of the sound system and therefore losing state of all non disk-based AudioClips and filters. SetDSPBufferSize has been declared obsolete for the same reason.

The hardware, loopable and compressionBitrate properties of AudioImporter are now obsolete.

Editor

Creating, duplicating or instantiating (prefab) in editor generates unique name between siblings. Does not affect renaming, re-parenting, scripting or playmode.

Editor always runs in background when a debugger is attached.

EditorApplication.NewScene() creates a scene that has a Main Camera, a Directional Light, a default Skybox set and has Enlighten enabled by default. If you need a new scene with no GameObjects in it use EditorApplication.NewEmptyScene().

If standalone is current build target, do a full build target switch when setting EditorUserBuildSettings.selectedStandaloneTarget.

It is now recommended to derive from ShaderGUI instead of deriving from MaterialEditor to make custom gui for shaders. This ensures that custom shader gui works properly together with the Substance Material Editor (Check the docs for ShaderGUI).

Merged two scene view render mode dropdowns into one.

New bug reporter

Players always run in background when "Script Debugging" is enabled.

Prefab instance objects are no longer stored as part of the scene file.

TextMesh and MeshFilter components are not allowed to exist on the same GameObject.

When manipulating preview object in Material inspector camera will rotate around the object instead of rotating the object itself, this was needed so you can see different reflections from different angles.

Fonts

Font.textureRebuildCallback has been renamed to Font.textureRebuilt and is now a static event of type Action. Font.textureRebuildCallback continues to work but has been deprecated. This change cannot be upgraded automatically by the script updater.

Graphics

Changed behavior of what happens with textures that are too large for the GPU to handle, and they don't have mipmaps. Now such textures are displayed in blue color. Before, some platforms were downscaling them in some cases; other platforms were leaving them as garbage; others were crashing.

DX11: Uses CPU rendering (WARP device) when running in batch mode without a GPU; can also request WARP with "-force-driver-type-warp" command line argument.

GLES: Replaced 16bit depth buffer support with the ability to completely disable depth and stencil buffers.

Image Effects:

All built-in image effects were rewritten from JavaScript to C#. You probably want to delete old files and import the fresh Effects package if you want the latest version.

Removed old Glow image effect; use Bloom or Bloom(optimized) instead.

Light and Reflection Probes are enabled on Renderer components by default.

Made SystemInfo.graphicsPixelFillrate obsolete (it was not being maintained to cover new GPUs, and was not working on most platforms anyway). Now it always returns -1, just like it used to for unknown GPUs.

RenderTexture.Create now actually does nothing if RenderTexture is already created, just like documentation always said :)

Replaced the built-in sphere and capsule meshes with versions that are better suited for lightmapping. Because the topology has changed both UV1 and UV2 are now different.

Setting Mesh.colors keeps the colors in float format instead of converting to bytes. This allows you to store higher-precision color values on meshes. Note that it will use more memory so if that is a concern use Mesh.colors32 instead.

Skybox geometry was changed for cubemapped and other single-pass skybox shaders. Now instead of a big cube, it's a big and somewhat tessellated sphere, with more polygons near horizon. Allows computing things per-vertex in skybox shaders for performance.

iOS

An animated splash screen with a Unity logo is shown for non-Pro license users by the engine itself. Static pre-splash screens can be customized by all users.

Automatic Reference Counting (ARC) is enabled.

Changed the way UI integration works. Now there are specialized ViewController's for fixed orientation. Also made custom UI integration easier - both for simple and complicated cases (e.g. if you have portrait unity content in landscape ViewController, script side and _unityView.content orientation will return portrait, while AppController's interface orientation will be landscape). For more details check comments in Classes/UI/UnityAppController+ViewHandling.h in trampoline

createUnityViewImpl was deprecated and removed (assert will be fired if you implement this method). Override createUnityView instead.

createViewHierarchyImpl was deprecated and removed (assert will be fired if you implement this method). Override willStartWithViewController instead.

createViewHierarchy was deprecated and removed. Use createUI instead if you had it called from custom place.

Refactored player pausing in the trampoline.

Default splash screens set to solid color.

Trampoline now uses clang standard library, C++11 is enabled, iOS 7.0 SDK and Xcode5 are enforced, iOS 6.0 is the minimal version supported.

Fixed TCP 56000 port in now used by player for script debugging.

Linux

Minimum supported version is now Ubuntu 12.04 LTS.

OS X

Application.persistentPath will now correctly give you a folder in ~/Application Support instead of ~/Library/Caches.

Mac OS X Standalone: Data folder has moved to Content/Resources, in accordance with Apple guidelines.

Physics

Disabled MonoBehaviours will no longer receive collision or trigger callbacks.

Expose contactOffset both global and per-shape. This comes to replace Physics.minPenetrationForPenalty that lost its original meaning with the upgrade to PhysX3. Contact offset is the value that directly affects the distance at which PhysX starts generating contacts; when the distance between colliders is less than the sum of their respective contact offsets the contacts are generated. The value is useful when you have fast moving ragdolls and observe the not physically correct behaviour of joints when the colliders they connect penetrate other collision geometry.

Expose enablePreprocessing on joints. Having this flag unset basically lets PhysX to ignore some of the broken joint constraints in complicated configurations; otherwise such constraints may produce huge impulses that lead to "explosions". A typical usecase would be when upgrading a PhysX-powered Unity 4 2D game where you have 2 rotations frozen on each Rigidbody and joints are attached to some of them.

Expose projections on CharacterJoint to help with stretching of limbs. Joint projection is a technique that once enabled makes sure the joint constraints are not violated for more than a tolerance value by adjusting the connected bodies' pose so that they it is always within tolerance. This is not a physical process (it may loose energy) and comes with some performance cost, but can serve as a good last resort in challenging configurations where otherwise ragdolls explode or overstretch.

Make CharacterController ignore any child & sibling colliders

Physics.maxAngularVelocity has been removed as it is non-functional in PhysX 3.3. You can still use Rigidbody.maxAngularVelocity.

Added generic version of Object.Instantiate (has been in the docs since 3.5 but not exposed in the API before).

Application.RegisterLogCallback() and RegisterLogCallbackThreaded() have been deprecated and replaced by two new events Application.logMessageReceived and Application.logMessageReceivedThreaded. This allows for multiple subscribers.

C# compiler defaults script encoding to UTF8.

Deprecated Component.active property has been removed.

GameObject.SampleAnimation() moved to AnimationClip.SampleObject().

'Metro' keyword was replaced to 'WSA' in most APIs, for ex., BuildTarget.MetroPlayer became BuildTarget.WSAPlayer, PlayerSettings.Metro became PlayerSettings.WSA. Defines in scripts like UNITY_METRO, UNITY_METRO_8_0, UNITY_METRO_8_1 are still there, but along them there are defines UNITY_WSA, UNITY_WSA_8_0, UNITY_WSA_8_1.

TerrainData.physicMaterial changed to TerrainData.GetPhysicMaterial() and TerrainData.SetPhysicMaterial().

Shaders

All opaque & skybox built-in shaders and surface shaders now output 1.0 into the alpha channel. This means that image effects that used "alpha as fake HDR" (e.g. old Glow from Unity 1.x days) will not work with them anymore. Use “keepalpha” surface shader option to keep the old behavior.

Built-in lightmaps (unity_Lightmap etc.) are declared in UnityShaderVariables.cginc now. If you had them declared in your own shader code, you might need to remove them (we'll try to do that automatically).

Fog handling in shaders was changed.

For surface shaders and fixed function shaders, nothing to do. Can add "nofog" to surface shader #pragma line to explicitly make it not support fog.

For manual vertex/fragment shaders, fog does not happen automagically now. You need to add #pragma multi_compile_fog and fog handling macros to your shader code. Check out built-in shader source, for example Unlit-Normal how to do it.

Mixing partially fixed function & partially programmable shaders (e.g. fixed function vertex lighting & pixel shader; or a vertex shader and texture combiners) is not supported anymore. It was never working on mobile, consoles or DirectX 11 anyway. This required changing behaviour of Reflective/VertexLit shader to not do that - it lost per-vertex specular support; on the plus side it now behaves consistently between platforms.

Direct3D 9 shader compiler was switched from Cg 2.2 to HLSL, the same compiler that's used for D3D11. This fixes a bunch of issues where Cg was generating invalid D3D9 shader assembly code; and generally produces slightly more efficient shaders. However, HLSL is slightly more picky about syntax; in general you have to do same shader fixes for D3D9 as for D3D11 now (e.g. UNITY_INITIALIZE_OUTPUT for “out” structures).

On desktop OpenGL, shaders are always compiled into GLSL instead of ARB_vertex/fragment_program target now. You no longer need to write "#pragma glsl" to get to features like vertex textures or derivative instructions. All support for ARB_vertex/fragment_programs is removed.

Shadows

All built-in shadow shaders use backface culling now. Use “two sided” cast shadows option if you do not need backface culling.

Shadows on D3D9 require "native shadowmap" support in the driver now (pretty much all systems that can do shadows have that, so this should be fairly invisible). Upside: less shader variants are included into game builds now.

Audio

AudioSources now take up fewer resources. Previously this caused problems when importing projects with a large number of AudioSource contained in prefabs.

Improved audio importer interface to be make options more clear

Increased default virtual voice count from 100 to 512 and made it user-configurable through project settings.

Removed 3D property in AudioClip and moved all 3D audio functionality to the AudioSource.

Renamed AudioSource.panLevel to AudioSource.spatialBlend. This property now controls the 2D / 3D mode of sound playback through this AudioSource. There is no longer a mode toggle, but a continuous interpolation between the two states.

Renamed AudioSource.pan to AudioSound.panStereo. This is to remove confusion about the nature of this property. AudioSource.panStereo pans the audio signal into the left or right speakers. This happens before spatial panning is applied and can be applied in conjunction with 3D panning.

Blackberry

Added "Add Attached Device" to the debug token creation window.

Application.systemLanguage now differentiates between Chinese Simplified and Chinese Traditional appropriately.

Registration now uses BlackBerry's 10.2 registration system. Currently registered systems do not need to re-register.

Documentation

Default language for code snippets in the Scripting Reference is C#, with many more examples in C# available, with Javascript as a secondary language, and Boo removed.

Localized documentation available in Russian, Spanish and Japanese (currently based on 4.6 docs and over time 5.0).

Improved searching for class names in different namespaces and across different user assemblies.

Improved UI display names in Player Settings

License: Activate from command-line.

License: Added -returnlicense command line option, which returns the currently active license and quits the editor.

License: A progress bar will be shown during returning or releasing a license.

LightmapParameters now has an icon

LightmapSnapshot now has an icon

MaterialEditor improvements

Show a foldout arrow for Material inspectors inlined on gameobjects to make it clear that they can be expanded/collapsed.

Added TexturePropertyMiniThumbnail(): Draw a property field for a texture shader property that only takes up a single line height. The thumbnail is shown to the left of the label. Clicking the thumbnail will show a large preview info window.

Added GetTexturePropertyCustomArea():. Returns the free rect below the label and before the large thumb object field. Is used for e.g. tiling and offset properties.

Added TextureScaleOffsetProperty(): Draws tiling and offset properties for a texture.

Texture scaling and offset values can now be dragged.

Optimization of Hierarchy Window

Prevent tooltips from showing while dragging.

Tag editor facelift by removing the empty tag and using Reorderable list to draw tags and layers.

When browsing for a location to create or open a project, the dialog starts at the location where a project was last created or opened.

All baked and realtime lightmapping computations are now done in linear space, this makes lighting between gamma & linear space look much closer. When using pure lightmaps, it should in fact look very similar.

Increased maximum number of simultaneous render targets (MRT) to 8 on capable platforms.

Light intensity now behaves consistently between linear and gamma space rendering mode. Lights in linear mode can now have much higher intensity. The light intensity is now defined to be in gamma space, hence in linear rendering it is converted to linear space when passed to the shader. (In linear space the maximum effective light intensity is now 97 while previously it was 8).

Lightmaps & baked probes compressed with RGBM now have an effective range of 5 in gamma space or 32 in linear space. This reduces RGBM compression artifacts for lightmaps. Emissive surfaces for enlighten are encoded with a range of 8 in gamma space and 97 in linear space.

Meshes: Mesh compression will now also do lossy compression of vertex colors.

Overhauled stats window to be more compact and profiler rendering stats to be more comprehensive.

Reduced memory consumption when loading textures on mobile devices.

Rendering code optimized to reduce amount of material SetPass calls. Light probes and lightmap UV transform state changes are now internally applied via MaterialPropertyBlocks without requiring a full SetPass. This reduces cost on the main thread to send commands to the render thread, and on the the render thread the driver overhead is reduced.

Scene View: Can drag a cubemap onto empty space in the scene view to assign it as a skybox.

Skinned meshes use less memory by sharing index buffers between instances.

Cloth inspector is now much faster and capable of dealing with meshes of any vertex count

Exposed a function ConfigureVehicleSubsteps in WheelCollider to make it possible for developers to customise vehicle sub-stepping. This helps setting up heavy vehicles, that require different amount of sub-steps to simulate wheels correctly.

Make scaling mesh colliders cheaper, by not creating a new mesh with scaling applied to it with every scale change.

Redesigned WheelCollider gizmo to show more relevant information.

Removed internal lock in PhysXRaycast, particles should now be able to process raycasts in multithreaded mode.

Show inconsistent hinge joint constraints in inspector

Updated default values for WheelCollider as the old ones did not make any sense with new PhysX.

Players

Add -show-screen-selector command line option for Linux and Windows.

Cursor management cleanup

Screen.lockCursor has become Cursor.lockState

Screen.showCursor has become Cursor.visible

Added ConfineCursor state to confine cursor to game window (Linux/Windows)

Cursor lock state and cursor visibility state are now mutually independent.

Plugins

Unity will now verify that plugins don’t collide with each other before building to player. Previous behavior was that you would need to wait until all the scenes were built, and you would only then see that plugin with same filename is trying to overwrite another plugin.

(Windows Store Apps/Windows Phone): when picking placeholder plugins only plugins with matching file names as the original plugin will be shown

Profiler

Added total and per frame GC allocated bytes to the Memory chart.

Image Effects have profiling blocks with the script name in them, instead of a generic "ImageEffect".

Improved accuracy of reported AudioSources in the scene when working with AudioSources in prefabs.

Shaders

Added [Gamma] property attribute; allows Float and Vector properties to be flagged for automatic gamma correction. Tagged Float and Vector properties will function the same way as Color properties do - gamma correction will be applied, if necessary, before sending values to the GPU.

Better handling of texture*Lod for OpenGL ES 2.0. On devices that don't support it, the generated shader code will automatically do a biased mip lookup approximation.

Built-in Fog works on all platforms now (includes WP8/WinRT/consoles).

Cleaned up shadow macros for shaders (UNITY_DECLARE_SHADOWMAP, UNITY_SAMPLE_SHADOW). On platforms that always have "native shadow maps" (e.g. DX11), there's no need for SHADOWS_NATIVE keyword to be present for these macros to do the right thing. On platforms that don't have native shadow maps (e.g. some GLES2.0 devices, Xbox360), these macros will do comparison of texture & depth manually.

Existing user surface shaders with custom lighting functions work with Non-Directional (baked and realtime) and Directional (baked) lightmap types. These lighting functions need to be updated to use the UnityGI structure to take advantage of all the new lightmap types and reflection probes.

Improved "compile and show code" functionality in shader inspector. Now has dropdown to select custom set of platforms to compile shaders for. And shows a progress bar while compiling shader variants for display.

Made it possible to use stencil buffer during deferred shading/lighting g-buffer passes, to some extent. Stencil reference value coming from shader/material will be combined (binary or) with Unity-supplied reference value.

Shaders no longer apply a 2x multiply of light intensity. Instead lights are automatically upgraded to be twice as bright. This creates more consistency and simplicity in light rigs. For example a directional light shining on a white diffuse surface will get the exact color of the light.

The upgrade does not affect animation, thus if you have an animated light intensity value you must change your animation curves or script code and make them 2x as large to get the same look.

You might have to adjust your shaders to remove a 2x multiply. This is only the case if you define your own lighting function, in the case of surface shaders this is usually not the case. So most content will not require the change. In most cases the shader code looks like this:

Surface shaders can use the UnityGI structure in their lighting functions. UnityGI contains light from all lightmap types, light probes and reflection probes. The built-in Lambert and BlinnPhong were updated to use it as well.

Surface shaders use up slightly less samplers on DX11-like platforms. Added UNITY_SAMPLE_TEX2D_SAMPLER helper macro to read a texture, while using sampler from another one.

Building on top of existing project will now check if a project being overwritten is compatible with newly built one.

Chinese Traditional and Simplified languages are now detected and reported, instead of always returning generic Chinese.

Handheld class added.

PlayerPrefs will be saved whenever application goes into suspend mode.

Use joysticks in addition to Xbox 360 controllers, but you have to enable HumanInterfaceDevice capability in PlayerSettings. Note: this capability is not visible in Package.appxmanifest UI interface in Visual Studio.

Fixes

2D

Sprite name can't be empty, or contain characters that are not supported in assets when created from Sprite Editor.

Fix issue where auto-generated offmeshlinks were generated only at the origin.

Fix issue where baking navmesh for a duplicated scene would destroy the original scenes navmesh

Fix issue where obstacles and other agents wouldn't be avoided correctly by NavMeshAgents. The fix can cause the agents to avoid other agents more than before. You can reduce the avoidance prediction time (NavMesh.avoidancePredictionTime) to tune down the avoidance.

Fix issue where using navmesh built with "Height Mesh" enabled would sometimes crash Unity.

Fix memory leak after navmesh baking of terrain meshes.

Fix problem where any change in rotation or scale would trigger re-carving regardless of specified move-threshold.

Fix regression where NavMeshAgent velocity would always have zero y-component.

Prefabs: Fix crash if using DestroyImmediate() on prefab instance objects during prefab instantiation.

Prefabs: Fix crash when accessing physics component properties during OnValidate(). This includes a general change in behavior for OnValidate() calls during prefab instantiation and undos such that it follows the same order as when loading from disk.

Prefabs including monobehaviours with missing scripts should not display a warning if the monobehaviour has been deleted on the prefab instance.

Resources.Load will now correctly return NULL when there is no Object of the desired type with that name (instead of returning an object with a different type if it exists)

Audio

AudioClip.SetData no longer prints out error messages when writing data at a position that will cause wrapping.

Calling AudioClip.SetData causes a crash fixed

Fixed a bug where the audio system stopped working when a game object had an AudioSource, an AudioListener and a custom audio filter attached. The system now outputs a warning as the custom audio filter can only be assigned to one Audio component at a time.

Fixed Crash when exposing a parameter of an effect that was added to a group

Fixed for regression where component effects are on the AudioListener cause a crash

Fix importing Tracker files so that by default, they are set to load Compressed In Memory. This is also now configurable.

Fixed leaking audio resources when having AudioSources within a Prefab

Prevent data-race condition in AudioManager

Prologic DTS can now be selected as an audio output.

Remove exposed parameters correctly when deleting and effect that has exposed parameters in it.

Stability fix for custom audio filters placed on the AudioListener.

When audio clip was set to Load In Background project crashed on Android immediately

Substance

Emissive outputs assigned to _EmissionMap shader slots now correctly trigger the emissive effect when the material is loaded.

Fix case where the editor-side Substance cache data would not be reused when it should.

Fix crash in standalone builds when loading a SBSAR with both BakeAndDiscard instances and non-baked instances.

Fix crash when inspecting baked ProceduralTextures.

Fix texture corruption issue in standalone builds where modifying an input value and calling RebuildTextures() on a ProceduralMaterial with image inputs and whose outputs have been read from cache would result in black textures being generated.

Grayscale image inputs are now supported.

ProceduralMaterials only referred to by their outputs and not by their attached material now load properly.

Unity now regenerate test certificate, if it was deleted, rather than failing to build project.

runInBackground checkbox will now warn about wack failure that it might cause.

UNITY_WINRT_8_1 and UNITY_WINRT_8_0 will be correctly defined now.

Unity will now store certificate path as a relative path, so when project is moved to another PC, it will be still found.

When building player files are now copied directly to destination directory bypassing staging area, reduces project size when submitting a bug

You can now use HashAlgorithm & MD5CryptoServiceProviders classes in C# files compiled against .NET Core.

Known issues

New Substance features introduced by Substance Designer 5.0 are not yet supported inside Unity.

On Windows 7, system dialog (File Open/File save) and homescreen/project launcher window, the editor in the background doesn't redraw properly when the window is dragged around

WebGL: If you set up a UI Event to trigger a method on a class which is not a MonoBehaviour, and that method is not invoked elsewhere from your code, then the method may be stripped, and the event will fail. The workaround is to explicitly call the method in some place in your code to make sure it won't be stripped.

Enabling GPU panel in profiler, and stopping or closing the profiler, will result in the editor almost stalling while printing many error messages. A workaround is to close the GPU panel before closing or stopping the profiler. Will be fixed in patch release

Animation :Copy/Pasting States or StateMachines will not copy it’s StateMachineBehaviours they will be shared between the copies. Will be fixed in patch release.

Animation: Panning with alt-click does not work in the BlendTree graph. Will be fixed in patch release.