Release Notes Background

Unity 5.4.0 Beta

Get early access to features in the upcoming full release now.

Manual installs

Component installers

Release

Known Issues

5.4.0b19 Release Notes (Delta since B18)

Features

  • Editor: Optional "strict mode" when building projects and AssetBundles, which will fail the build if any errors (even non-fatal ones) are reported during the build process.
  • iOS: Added ODR initial install tags support

Improvements

  • Android: Symbols for release libraries are now available in PlaybackEngines/AndroidPlayer/Variations/*/Release/Symbols.
  • UI: Added rootCanvas property to Canvas.

Fixes

The following are changes and fixes to 5.4.0 features and regressions...

Fixes

5.4.0b19 Release Notes (FULL)

Features

  • Asset Import: Support importing models with more than 100,000 objects
  • DX12: Added support for multi-display rendering.
  • GI: Light Probe Proxy Volumes
    This component allows using more than one light probe sample for large dynamic objects (think large particle systems or important characters). This will sample probes into a 3D texture and use that in the shader.
    • Requires shader model 4 (DX11+/PS4/XB1/GLCore).
  • GI: Occlusion of the strongest mixed mode light is stored per light probe
  • Graphics: Added motion vector support:
    • Requires RG16 texture support.
    • Motion vectors track the screen space position of an object from one frame to the next and can be used for post process effects.
    • See the API docs for: Renderer.motionVectors, Camera.depthTextureMode, SkinnedMeshRenderer.skinnedMotionVectors, PassType.MotionVectors, and DepthTextureMode.MotionVector.
  • Graphics: Added [ImageEffectAllowedInSceneView] attribute for Image Effects. This will copy the Image effect from the main camera onto the Scene View camera. This can be enabled / disabled in the Scene View effects menu.
  • Graphics: Basic GPU Instancing Support
    • Use GPU instancing to draw a large amount of identical geometries with very few draw calls.
    • Works with MeshRenderers that use the same material and the same mesh.
    • Only needs a few changes to your shader to enable it for instancing. Supports both custom vertex/fragment shader and surface shader.
    • Set per-instance shader properties from script via MaterialPropertyBlock.
    • Supports Graphics.DrawMesh command.
    • Supports Windows DX11/DX12 with SM 4.0 and up, OpenGL 4.1 and up on Windows/OSX/Linux.
  • Graphics: Fast texture copies via Graphics.CopyTexture.
  • Graphics: Graphics jobs can now be enabled (see player settings) for a potential performance boost. Currently in experimental status due to unknown project-dependent side effects.
  • Graphics: Texture Array support, seeTexture2DArray class.
  • IAP: Added support for fetching IAP products incrementally in batches.
    • FetchAdditionalProducts method added to IStoreController
  • IAP: Cloud catalog support
    A 'useCloudCatalog' boolean has been added to UnityEngine.Purchasing.ConfigurationBuilder. When set, Unity IAP will fetch your catalog of products for sale from the Unity cloud. Catalog is configured via the Unity Analytics dashboard.
  • iOS: Add URL schemes player setting
  • Kernel: The transform component has been rewritten using SIMD and a cache friendly data layout, the code is simpler and faster. As a result Transform.Setparent for large hieararchies can also be more expensive since all data for one hiearchy will always be tightly packed together.
  • OSX: Editor enabled retina support (text and some icons only)
  • Particles: Define particle width and height separately
  • Particles: Trigger Module
  • Physics: Expose ContactPoint.separation
  • Physics: Implement Physics.OverlapCapsule & Physics.OverlapCapsuleNonAlloc
  • Physics: Overlap recovery, used to depenetrate CharacterControllers from static objects when an overlap is detected. When activated, the CharacterController module will automatically try to resolve the penetration, and move the CharacterController to a safe place where it does not overlap other objects anymore.
  • Physics: Skip running the PhysX simulation step if not required by Rigidbodies or WheelColliders
  • Shaders: Uniform array support
    • Uniform arrays can be set by new array APIs on MaterialPropertyBlock.
    • The size of an array is lifted to 1023.
    • The old way of setting array elements by using number-suffixed names is deprecated.
  • Substance: Substance: ProceduralMaterials are now supported at runtime on Windows Store/Phone platforms
  • VR: Added support for Native Spatializer Plugins for VR. Oculus Spatializer included with the support.
  • VR: Native OpenVR support added
    • Note that native OpenVR support renders with an off-center asymmetric projection matrix. This means that any shaders which relied on fov / aspect may not work correctly.
  • VR: Optimized Single-Pass Stereo Rendering available in Player settings
  • VR: VR Focus and ShouldQuit Support -Application Focus is now controlled by respective VR SDK when Virtual Reality Support is enabled. -Application will quit if the respective VR SDK tells the app to quit when Virtual Reality Support is enabled
  • VR: VR Multi Device Support
    • PlayerSettings: When the Virtual Reality Supported checkbox is checked, a prioritized list is shown allowing devs to choose which VR SDKs their game supports. (Similar to the Graphics API selection dialog)
    • VR SDK list is per build-target.
    • Dependencies (dlls, etc) will be copied to the build for every sdk in the list.
    • At startup, we’ll go down the list and try to initialize each device. If any fail to initialize (headset not connected, etc), we’ll move on to the next. If all fail, we won’t enter VR mode.
    • PlayerSettings: Deprecate PlayerSettings’ stereoscopic 3d checkbox. This goes through the same subsystem as the VR devices, so a non-headmounted stereoscopic driver is one of the possible devices on supporting platforms.
    • VR API: Deprecate VRDeviceType enum and VRSettings.loadedDevice. This is replaced with VRSettings.loadedDeviceName and VRSettings.LoadDeviceByName().
    • VR API: Add the ability to get a list of supported sdks. Readonly: string[] VRSettings.supportedDevices
  • Web: GamePerf service integration. You can now track your exceptions from the wild by enabling this in the services window.
  • Web: WebPlayer support has been removed, and default player is the platform desktop being run on for the editor.
    • Therefore desktop platform installation choices are removed as being part of their respective editors.
  • Windows: Added speech recognition APIs under UnityEngine.Windows.Speech. These APIs are supported on all windows platforms as long as they're running on Windows 10: Windows Editor, Windows Standalone and Windows Store
  • Windows: Windows Standalone player now can be run in Low Integrity Mode by passing -runWithLowIntegritylevel command line argument
  • Windows 10: Added support for gsync and freesync on Windows 10 on DirectX 11 (for the Windows Store player only) and DirectX 12 (for both the Standalone player and the Windows Store player).
  • Windows Store: Add command line argument -dontConnectAcceleratorEvent to disable accelerator event based input. This disables support for some keys in Unity (like F10, Shift), but fixes issue with duplicate characters in some XAML controls.
  • Windows Store: Realtime global illumination now works when using Windows 10 SDK
  • Windows Store: UnityWebRequest now supported for all SDKs

Backwards Compatibility Breaking Changes

  • Android: WebCam no longer works on Gingerbread devices.
  • Deployment Management: Any errors logged during the build process will now cause the build to fail. This includes errors that previously allowed the build to succeed anyway, such as shader compilation failures.
  • DX12: Introduced new native plugin interface IUnityGraphicsD3D12v2 . The old interface will not function anymore due to differences in internal graphics job submission.
  • Editor: Deprecated UnityEditor.ShaderUtil.ShaderPropertyTexDim; use Texture.dimension.
  • GI: Deprecated Light.actuallyLightmapped, use Light.isBaked and Light.bakedIndex instead. Baked Light got unique index, instead of the flag "actuallyLightmapped"
  • Graphics: Further deprecated Material(String) constructor - this will now always create a material with the error shader and print an error, in editor and player. It will be completely removed in a future Unity version.
  • Physics: Changes to avoid Physics transform drift by not sending redundant Transform updates.
  • Physics: Changes to reject Physics Meshes if they contain invalid (non-finite) vertices.
  • Playables: Refactored API so that Playables are structs instead of classes, making the API allocation-less in C#.
  • Scripting: Added two new script errors in the editor for catching calls to the Unity API during serialization. See "Scripting Serialization" page in the manual for more details.
  • Scripting: To facilitate a memory optimization, UnityEngine.Object.GetInstanceID() is no longer thread safe.
  • Web: Promoted WebRequest interface from UnityEngine.Experimental.Networking to UnityEngine.Networking. Unity 5.2 and 5.3 projects that use UnityWebRequest will need to be updated.

Changes

  • Android: Assets - Disable texture streaming for Android
  • Android: Deprecated UnityPlayerNativeActivity and UnityPlayerProxyActivity; these will print warnings to the logcat if in use.
  • Android: Removed native activity implementation. An activity with the same name based on a regular activity is still in place for backwards compatibility reasons.
  • Audio: Streamed audio clips are no longer preloaded. This is done to reduce the number of open file handles in scenes referencing a large number of streamed clips. The behaviour is not affected except for a slight increase in playback latency.
  • Audio: Updated FMOD to 4.44.56
  • DX12: Disabled client/worker mode as a preparation step for pure threading (-force-gfx-mt now does nothing for DX12).
  • DX12: Enabled GPU profiler in single-threaded mode (-force-gfx-direct).
  • Editor: Editor will now trigger a warning when opening a project from any version not matching the project's matching last version string saved in information. This includes small version changes such as 5.4.0b1 to 5.4.0b2 or 5.4.0f3 to 5.4.0p1.
  • Particles: Added particle radius parameter for world collisions.
  • Physics: API changes:
    • Renamed Cloth.useContinuousCollision to Cloth.enableContinuousCollision and Cloth.solverFrequency to Cloth.clothSolverFrequency.
    • Exposed Cloth.enableTethers.
  • Physics: API changes:
    • Renamed Physics.solverIterationCount to Physics.defaultSolverIterations and Rigidbody.solverIterationCount to Rigidbody.solverIterations.
  • Physics: Fixed Character Controller Physics causing capsule to be thrown in the air when exiting another collider.
  • Samsung TV: Added Ignore BG Alpha Clear checkbox to Resolution section of Samsung TV player settings. This will disable the clearing of the alpha value for the background fill, allowing for blending between Unity's render layer and the layer behind.
  • Shaders: Internal shader for computing screenspace cascaded shadows was moved into Graphics Settings. If you were overriding it before by just dropping it into the project -- now need the custom one via Graphics Settings.
  • Shaders: Removed support for EXT_shadow_samplers on non-iOS OpenGL ES 2.0 platform.
  • Terrain: Terrain objects created in the scene will now be properly renamed to avoid using the same name.
  • Terrain: When different TerrainData are used for Terrain and TerrainCollider components on one GameObject, a warning message is shown and a button to help fix the situation.
  • UI: Switch component menu name for RectMask2D to match class name

Improvements

  • Analytics: Added missing fields to the hwstats report.
  • Android: Added template for ProGuard obfuscation on exported project.
  • Android: Application name now supports non-alphanumeric characters and spaces.
  • Android: Audio - Don't select OpenSL output if the native device params are too bad for fast path (fixes audio issues on buggy devices)
  • Android: Buildpipe - Updated SDK tools requirements for the Editor
  • Android: Converted some fatal error messages to be presented on-screen rather than printed to the logcat.
  • Android: Editor - Added Marshmallow to the list of APIs
  • Android: Enhanced robustness of Location input.
  • Android: IL2CPP - Use Android NDK x64 on x64 Windows Editor
  • Android: SoftInput - Get rid of hardcoded text color, switch to Light theme
  • Android/IL2CPP: Full debug version of IL2CPP libraries are now stored in Temp/StagingArea/Il2Cpp/Native.
  • Android/IL2CPP: Stripping of symbols and debug info is now enabled by default. Development builds still have symbols, which makes for a slightly larger binary.
  • Animation: Improved Animation event performance for repeat calls to the same events on components.
  • Audio: Added virtualization of audio effects. For audio sources that are virtual because they have been culled due to low audibility or priority, attached effect components or spatializers are now also bypassed in order to save CPU. The new behaviour is on by default, but can be turned off in the audio project settings.
  • Audio: Audio clip waveform preview now displays the actual format used for compression when the default format isn’t available on a certain platform.
  • Audio: Fixed audio clip waveform preview rendering sync issues after import and improved the way the waveforms are being rendered to be more dynamic and reveal more detail.
  • Cache Server: Cache server: Improved the cache server so that it can properly handle scenarios when assets with missing references are being read.
  • Cluster Rendering: Improvements to the cluster networking, including stability improvements while using cluster input.
  • Compute: Added DispatchIndirect function (similar to DrawProceduralIndirect; dispatches compute shader with parameters sourced from ComputeBuffer)
  • Compute: API of hidden counters on ComputeBuffers can now be optionally reset when bound, and can be explicitly set via SetCounterValue.
  • Compute: Exposed ComputeShader.GetKernelThreadGroupSizes to query compute thread group sizes.
  • Compute: Improve error handling for compute shaders
  • Core: Added more profiling information to the PersistentManager.
  • Core: Improved job execution. Spawn worker threads are now based on the number of logical processors instead of physical cores.
  • Documentation: Improved the docs for Graphics.DrawMesh
  • DX12: Introduced -force-d3d12-stablepowerstate command line parameter. Use it when profiling the GPU.
  • Editor: Added ability to hide the tetrahedron wireframe while editing light probe group.
  • Editor: Added cancel button to "Opening Visual Studio" progress dialog.
  • Editor: Added edit mode for light probe group to avoid accidental selection changes.
  • Editor: Fixed the title of the Script Execution Order inspector
  • Editor: In Play Mode the DontDestroyOnLoad scene will now only be shown if it has GameObjects.
  • Editor: Scene headers are now always shown in the Hierarchy to prevent confusion when loading and unloading scenes in Play Mode. This also allows user see which Scene is loaded in OSX fullscreen mode.
  • GI: Added Lightmapping.realtimeGI and Lightmapping.bakedGI editor APIs.
  • GI: Atlassing would generate atlases with wasted space when scaling down objects.
  • GI: Final Gather no longer recomputes if the result is in the cache.
  • GI: HDR color picker is now used for ambient color, instead of color plus ambient intensity.
  • GI: Improved mixing of realtime and baked shadows - removes shadow from the back-facing geometry, preserves bounce and contribution of other baked lights
  • GI: Store BakeEnlightenProbeSetJob results in hashed file to speed up rebaking of light probes.
  • GI: Upgraded to Enlighten 3.03.
  • Graphics: Added a -window-mode command line argument to override full-screen behaviour. Options: exclusive, borderless.
  • Graphics: Added GL.Flush API.
  • Graphics: Added MaterialPropertyBlock.SetBuffer
  • Graphics: Added mechanism to tweak some unity shader defines per-platform per-shader-hardware-tier. Currently it is exposed only to scripts: see UnityEditor.Rendering namespace, specifically UnityEditor.Rendering.PlatformShaderSettings for tweakable settings and UnityEditor.Rendering.EditorGraphicsSettings for methods to get/set shader settings. Please note, that if settings are different for some tiers, shader variants for ALL tiers will be compiled, but duplicates will be still stripped from final build.
  • Graphics: Added TextureDimension enum, and Texture.dimension property.
  • Graphics: Added useLightProbes argument to Graphics.DrawMesh (defaults to true).
  • Graphics: Allow setting a slice of 3D/2DArray as a render target (Graphics.SetRenderTarget depthSlice argument).
  • Graphics: LOD: Reduced render batch breaking overhead due to LOD fading.
  • Installer: Mac Download Assistant will write additional logs to ~/Library/Logs/Unity/DownloadAssistant.log
  • iOS: Add device support for iPhone SE and iPad Pro 9.7"
  • iOS: Added Xcode 7.3 Build & Run support.
  • iOS: Use new Game Center APIs when possible
  • OpenGL: Ported existing multidisplay support (Mac/Linux) to OpenGL core.
  • Particles: Added implicit conversion operators when setting MinMaxCurve with constants. This allows "myModule.myCurve = 5.0f;" syntax. Added the same support for MinMaxGradient when using one color.
  • Particles: It is now possible to read MinMaxCurve/MinMaxGradient in script, regardless of what mode it is set to. Previously it would give an error message in some modes.
  • Physics: Added 'OneWayGrouping' property to PlatformEffector2D for group contacts.
  • Physics: Exposed Rigidbody.solverVelocityIterations and Physics.defaultSolverVelocityIterations to help stabilize bounce behavior on impacts.
  • Physics: Physics job processing is now only done on the high priority job stack to avoid interference from other systems.
  • Physics: Point editing is now allowed in Inspector for Edge/PolygonCollider2D.
  • Profiler: Added toggle to exclude reference traversal in memory profile.
  • Scripting: Added new yield instruction: WaitForSecondsRealtime.
  • Scripting: Improved SendMessage performance for repeat calls to the same message on components.
  • Scripting: ScriptUpdater now asks whether to automatically update once per project session (i.e if a different project is opened or Unity is restarted).
  • Serialization: Serialization depth limit warning now prints the serialization hierarchy that triggered the warning
  • Shaders: #pragma target 3.5, 4.5, 4.6 are accepted.
    • 3.5 - minimum version for texture arrays (DX11 SM4.0+, GL3+, GLES3+, Metal)
    • 4.5 - minimum version for compute shaders (DX11 SM5.0+, GL4.3+, GLES3.1+)
    • 4.6 - minimum version for tessellation (DX11 SM5.0+, GL4.1+, GLES3.1AEP+)
  • Shaders: Added PassFlags=OnlyDirectional pass tag. When used in ForwardBase pass, it makes sure that only ambient, light probe and main directional light information is passed. Non-important lights are not being passed as vertex light constants nor are put into SH data then.
  • Shaders: Added shader #pragma to allow easy/cheap variants of shaders across different tiers of hardware in the same renderer without needing keywords (e.g. iPhone 4 and iPhone 6, within OpenGL ES).
  • Shaders: Improve shader translation performance when compiling shaders into OpenGL ES 2.0 & Metal
  • Shaders: Improved game data build times with many complex shaders, especially when they were already compiled before.
  • StackTrace: Deprecated Application.stackTraceLogType; users should now use Application.SetStackTraceLogType/GetStackTraceLogType instead.
  • StackTrace: For StacktraceLogtype.None only the message will now be printed (without file name or line number).
  • StackTrace: Stacktrace log type can now be set in PlayerSettings for various log types.
  • Standalones: Add -hideWindow command line option to launch standalone applications with window hidden.
  • Substance: Changes to warn the user when an input of a BakeAndDiscard ProceduralMaterial is being set at runtime.
  • UI: Added a new property AscentCalculationMode to TrueTypeFont importer to control how font ascent value is determined.
  • UI: Align By Geometry now supports vertical alignment; this can be useful for cases where the font ascent/descent info has large uneven spacing.
  • UI: Created an empty RectMask2D editor and modified the selectable one to hide script fields
  • UI: Improved the way that line spacing affects leading in text generation to provide more predictable leading when line spacing is less than 1.
  • UI: Made more functions virtual inside Graphics class
  • Windows Standalone: Added "Copy PDB files" option in build settings window, this way you can control to copy debugging files or not.
  • Windows Store: Added Bluetooth capability to player settings.
  • Windows Store: Added UnityEngine.Ping class.
  • Windows Store: Fixed generated Visual Studio solution and Assembly-CShap* projects, they will no longer rebuild needlessly. See upgrade guide for more information
  • Windows Store: Improved Visual Studio project generation, the solution shouldn't rebuild needlessly anymore, you might need to delete the old generated project so it can be regenerated
  • Windows Store: In Player Settings, visual asset images are now edited using object fields.
  • Windows Store: PDBs will now be included in the installers for "Release" players as well as debug and master players.
  • Windows Store: System.operatingSystem will add '64bit' postfix if target device has 64bit CPU (see more information in Unity Documentation).

Fixes

Changeset: 0df597686c75

Third Party Notices

Looking for a different release?

Find the Unity version that’s compatible with your existing projects, or that provides you with specific features unavailable in newer versions.