Release Notes Background

Unity 5.4.0 Beta

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

Manual installs

Component installers

Release

5.4.0b20 Release Notes (Delta since b19)

Known Issues

Improvements

  • Audio: Added ability to transition AudioMixer snapshots by scaled and unscaled time.
  • Audio: Moved Preload Audio Data to the platform-specific settings section. The previous location was confusing as it was shown grayed-out in the inspector with a checkmark that depended on all overrides.
  • Audio: SystemInfo now includes supportsAudio info.
  • Particles: Added Undo support when auto re-parenting sub-emitters.

Fixes

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

Fixes


5.4.0b20 Release Notes (Full)

Features

  • Asset Import: Importing is now supported for models with more than 100,000 objects.
  • DX12: Added support for multi-display rendering.
  • 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.
  • 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 now stored per light probe.
  • 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: 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: 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: Added support for ODR initial install tags.
  • iOS: Option for custom URL schemes added to Player Settings.
  • Kernel: The transform component has been rewritten using SIMD and a cache-friendly data layout, so the code is now simpler and faster. As a result, Transform.Setparent for large hieararchies can also be more expensive, since all data for one hierarchy will always be tightly packed together.
  • OSX: Added Editor-enabled retina support (text and some icons only).
  • Particles: New Trigger Module, including:
    • A script callback when particles touch a predefined list of collision shapes.
    • Ability to modify/kill particles that are intersecting the collision shapes.
  • Particles: Particle width, height and depth (for Mesh particles) can now be defined independently from each other.
  • Physics: New functions implemented: Physics.OverlapCapsule & Physics.OverlapCapsuleNonAlloc.
  • Physics: Overlap recovery, used to de-penetrate 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: Running the PhysX simulation step can now be skipped if not required by Rigidbodies or WheelColliders.
  • Physics: The ContactPoint.separation has been exposed.
  • 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: 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 (such as DLLs) will be copied to the build for every SDK in the list.
    • At startup, Unity will go down the list and try to initialize each device. If any fail to initialize (for example, if the headset is not connected), Unity will move on to the next. If all fail, Unity won’t enter VR mode.
    • PlayerSettings: Deprecated 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: Deprecated VRDeviceType enum and VRSettings.loadedDevice. This is replaced with VRSettings.loadedDeviceName and VRSettings.LoadDeviceByName().
    • VR API: Added 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 the default player is now the platform desktop being run on for the Editor. Therefore desktop platform installation choices are no longer available for 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: Added support for G-Sync 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: Windows Standalone player now can be run in Low Integrity Mode by passing -runWithLowIntegritylevel command line argument.
  • Windows Store: Command line argument -dontConnectAcceleratorEvent can now be added 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; users should now use Texture.dimension.
  • GI: Deprecated Light.actuallyLightmapped; users should now use Light.isBaked and Light.bakedIndex instead. Baked Light now has unique index, instead of the flag "actuallyLightmapped"
  • Graphics: Deprecated Material(String) constructor further. This will now always create a material with the error shader and print an error, in both Editor and player. It will be completely removed in a future Unity version.
  • Physics: Made changes to avoid Physics transform drift by not sending redundant Transform updates.
  • Physics: Physics Meshes are now rejected 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: UnityEngine.Object.GetInstanceID() is no longer thread safe (change made to facilitate a memory optimization).
  • 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 - Disabled texture streaming for Android.
  • Android: Deprecated UnityPlayerNativeActivity and UnityPlayerProxyActivity; these will now 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.
  • Graphics: Default Camera's background clear color now has 0 alpha, instead of 5/255 alpha.
  • 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: Fixed Character Controller Physics causing capsule to be thrown in the air when exiting another collider.
  • Physics: Renamed Physics.solverIterationCount to Physics.defaultSolverIterations, and Rigidbody.solverIterationCount to Rigidbody.solverIterations.
  • 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: Moved internal shader for computing screenspace cascaded shadows into Graphics Settings. If you were overriding it before by just dropping it into the project, you 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 (in the same way as GameObjects) to avoid using the same name.
  • Terrain: When different TerrainData are used for Terrain and TerrainCollider components on the same GameObject, a warning message will be shown with a button to fix the situation.
  • UI: Switched 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 - Automatic OpenSL output has been updated to check the native device params and not use OpenSL if they look bad (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 - Will now require Android NDK x64 on x64 Windows Editor instead of the 32-bit NDK.
  • Android: SoftInput: Got rid of hardcoded text color, switched to Light theme.
  • Android: Symbols for release libraries are now available in PlaybackEngines/AndroidPlayer/Variations/*/Release/Symbols.
  • 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 use. 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: 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: Improved 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 to see which Scene is loaded in OSX fullscreen mode.
  • GI: Added de-noising filter to baked final gather.
  • GI: Added Lightmapping.realtimeGI and Lightmapping.bakedGI editor APIs.
  • GI: Atlassing will now correctly generate atlases without wasting space when scaling down objects.
  • GI: BakeEnlightenProbeSetJob results now stored in hashed file to speed up rebaking of light probes.
  • 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: Upgraded to Enlighten 3.03.
  • Graphics: A slice of 3D/2DArray can now be set as a render target (Graphics.SetRenderTarget depthSlice argument).
  • 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: Ambient Occlusion now has separate sliders for direct and indirect light. The default value is Ambient Occlusion on indirect light only.
  • Graphics: DX12: Optimized texture/mesh loading times by using GPU copy queue.
  • Graphics: Reduced render batch breaking overhead due to LOD fading.
  • Installer: Mac Download Assistant will now write additional logs to ~/Library/Logs/Unity/DownloadAssistant.log.
  • iOS: Added device support for iPhone SE and iPad Pro 9.7".
  • iOS: Added support for new native rendering plugin interface.
  • iOS: Added Xcode 7.3 Build & Run support.
  • iOS: Updated Game Center APIs will be used when present on the target device.
  • 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.
  • ReflectionProbes: Specular probe convolution has been sped up (about 2x), and is now less noisy, particularly for HDR environments.
  • Scripting: Added new yield instruction: WaitForSecondsRealtime.
  • Scripting: Added UnityEngine.Diagnostics.PlayerConnection. This allows user to send files from player to Editor when profiler is connected.
  • 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 targets 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.
  • 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: Extended Standard Shader UI and added new options to disable specular highlights and reflections, and to pack Smoothness into the alpha channel of the Albedo texture.
  • Shaders: Implemented alpha-to-coverage ("AlphaToMask On" in shaders) on OpenGL/ES, DX9, and Metal (previously only on DX11/12).
  • Shaders: Improved game data build times with many complex shaders, especially when they were already compiled before.
  • Shaders: Improved shader translation performance when compiling shaders into OpenGL ES 2.0 & Metal.
  • 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: Added -hideWindow command line option to launch standalone applications with window hidden.
  • Substance: User now recieves a warning when an input of a BakeAndDiscard ProceduralMaterial is being set at runtime.
  • UI: Added new property AscentCalculationMode to TrueTypeFont importer to control how font ascent value is determined.
  • UI: Added rootCanvas property to Canvas.
  • 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 the Build Settings window. This way, you can control whether or not to copy debugging files.
  • Windows Store: Added Bluetooth capability to Player Settings.
  • Windows Store: Added UnityEngine.Ping class.
  • Windows Store: Fixed generated Visual Studio solution and Assembly-CSharp* projects so that 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; however, users may 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: New implementation for TouchScreenKeyboard on UWP, now supports both XAML and D3D apps as well as IME input. Older implementation can be turned on by passing command line argument -forceTextBoxBasedKeyboard.
  • 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: b220a1d6ff28

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.