Release Notes Background

Unity 5.4.0f3

Released on Jul 27, 2016

Manual installs

Component installers

Release

5.4.0f3 Release Notes (FULL)

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.
  • GI: Added de-noising filter to baked final gather. description
  • 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). It will sample probes into a 3D texture and use that in the shader.
    • Requires shader model 4+ platform (DX11/DX12 on Windows, GLCore 4.1+ on Mac/Linux, PS4, XboxOne). description
  • Graphics: 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 custom vertex/fragment shader and surface shaders.
    • Set per-instance shader properties from script via MaterialPropertyBlock.
    • Supports Graphics.DrawMesh command.
    • Requires shader model 4+ platform (DX11/DX12 on Windows, GLCore 4.1+ on Mac/Linux, PS4, XboxOne). description
  • Graphics: Improved multithreaded rendering:
    • Compared to current dual-thread rendering (main thread + rendering thread), this splits up rendering logic into concurrent "graphics jobs" that run on all available CPU cores.
    • See "Graphics Jobs" option in player settings (off by default, still considered experimental).
    • Currently implemented on PC (Win/Mac/Linux/WindowsStore), PS4, XboxOne. Best results with modern graphics APIs like DX12.
    • In addition to multithreaded rendering, overall CPU graphics performance should be better in 5.4. description
  • Graphics: Motion vector rendering 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.
    • Requires RGHalf render texture format support.
    • Utilized in the current beta of Unity Cinematic Image Effects descriptiondescription
    • See Keijiro Takahashi's example of vector field visualization KinoVision
      description
  • Graphics: Texture Array support
    • SeeTexture2DArray class.
    • Requires shader model 3.5+ platform (DX11/DX12 on Windows, GLCore Mac/Linux, GLES3+, Metal, PS4, XboxOne).
    • Here they are used in the Adam demo for terrain shading: description
  • IAP: Cloud catalog
    • 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.
  • IL2CPP: Android support for IL2CPP is now official (previously 'experimental').
  • iOS: Added support for ODR (On Demand Resources) initial install tags.
  • Kernel: The Transform component has been rewritten using SIMD and a cache-friendly data layout, so the code is now faster for many use cases.
  • OSX: Unity Editor supports Mac Retina displays now (mostly for improved text and icon rendering). Windows HiDPI support in development. description
  • 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.
      Editor UI: description Example: description
  • Particles: Particle width, height and depth (for Mesh particles) can now be defined independently from each other. Editor UI: description
    description Example: description
  • Physics: Various physics improvements:
    • Overlap recovery. Used to de-penetrate CharacterControllers from static objects when an overlap is detected. When activated, the CharacterController will automatically try to resolve the penetration, and move to a safe place where it does not overlap other objects.
    • Added ContactPoint.separation API.
    • Added Physics.OverlapCapsule and OverlapCapsuleNonAlloc functions.
    • Added Rigidbody.solverVelocityIterations and Physics.defaultSolverVelocityIterations, to help stabilize bounce behavior on impacts.
  • Services: GamePerf service integration. You can now track your exceptions from the wild by enabling this in the Services window.
  • Shaders: ComputeShader improvements:
    • Added DispatchIndirect function. Similar to DrawProceduralIndirect; dispatches ComputeShader with parameters sourced from ComputeBuffer.
    • API of counters on ComputeBuffers can now be optionally reset when bound, and can be explicitly set via SetCounterValue.
    • Exposed ComputeShader.GetKernelThreadGroupSizes to query Compute thread group sizes.
    • Improved error handling for ComputeShaders.
    • Debugging via #pragma enable_d3d11_debug_symbols, just like for regular shaders.
  • Shaders: Uniform array support
    • Uniform arrays can be set by new array APIs on MaterialPropertyBlock, Shader and Material.
    • Supports array sizes up to 1023.
    • The old way of setting array elements by using number-suffixed names is removed.
  • Substance: ProceduralMaterials are now supported at runtime on Windows Store/Phone platforms.
  • 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.
    • API: Deprecated VRDeviceType enum and VRSettings.loadedDevice. This is replaced with VRSettings.loadedDeviceName and VRSettings.LoadDeviceByName().
    • API: Added the ability to get a list of supported SDKs. Readonly: string[] VRSettings.supportedDevices.
  • VR: Native OpenVR support
    • 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: Native Spatializer Plugins for VR
    • Oculus Spatializer included with the support.
  • VR: Oculus Support for DirectX 12.
  • VR: Optimized Single-Pass Stereo Rendering
    • Instead of rendering each eye separately, this uses a wider render target and alternating draw calls to render both eyes with a single scene traversal.
    • Option in Player Settings.
    • Note that some image effects or screenspace shaders might need to be updated to work with it. description
  • 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 (editor, standalone, store apps).
  • 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 Store: Realtime global illumination now works when using Windows 10 SDK.

Backwards Compatibility Breaking Changes

  • Android: WebCam no longer works on Gingerbread devices.
  • 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: 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.
  • Shaders: Changed default shader compilation target to "#pragma target 2.5" (SM3.0 on DX9, DX11 9.3 feature level on WinPhone). Can still target DX9 SM2.0 and DX11 9.1 feature level with "#pragma target 2.0". The majority of built-in shaders target now 2.5. Notable exceptions are Unlit, VertexLit and fixed function shaders.

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.
  • Android: Screen.dpi now always returns densityDpi.
  • 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).
  • Graphics: Default Camera's background clear color now has 0 alpha, instead of 5/255 alpha.
  • Graphics: Unity splash screen replacement now uniform across platforms, featuring a light and pro-only dark style.
  • Installer: With Webplayer removal, desktop players are now part of their respective Editor installations, so the option to separately install them is removed.
  • iOS: Upgraded the minimum supported iOS version to 7.0. iOS 6 is no longer supported.
  • Physics: Exposed Cloth.enableTethers API. Renamed Cloth.useContinuousCollision to enableContinuousCollision, and Cloth.solverFrequency to clothSolverFrequency.
  • 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.
  • Scripting: Renamed onSceneLoaded to sceneLoaded, onSceneUnloaded to sceneUnloaded, and onActiveSceneChanged to activeSceneChanged, to be compliant with naming conventions.
  • Scripting: Using GameObject.AddComponent is no longer allowed and will throw an exception. Derive a class from MonoBehaviour and add it instead.
  • 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.
  • UI: UI no longer interacts with the cursor when the cursor is locked.
  • WebGL: Removed .htaccess file generation.
  • Windows Store: Deprecated PlayerSettings.WSA.enableLowLatencyPresentationAPI. It is now always enabled.

Improvements

  • Android: Added template for ProGuard obfuscation on exported project.
  • Android: Application name now supports non-alphanumeric characters and spaces.
  • Android: Converted some fatal error messages to be presented on-screen rather than printed to the logcat.
  • Android: Enhanced robustness of Location input.
  • Animation: Improved Animation event performance for repeat calls to the same events on components.
  • Asset Import: Unity now supports import of model files (such as FBX) containing more than 100,000 objects.
  • Cache Server: Improved the cache server so that it can properly handle scenarios when assets with missing references are being read.
  • Core: Improved multithreaded job execution. Spawn worker threads are now based on the number of logical processors instead of physical cores.
  • Core: Object.Instantiate now takes a optional Transform parent parameter.
  • DX12: Added support for multi-display rendering.
  • DX12: Introduced -force-d3d12-stablepowerstate command line parameter. Use it when profiling the GPU.
  • DX12: Optimized texture/mesh loading times by using GPU copy queue.
  • Editor: "Discard changes" in Scene context menu now reloads selected modified scenes.
  • Editor: Added an editor warning whenever a Shader with many variants (for example, Standard shader) is added to the 'always included' list in graphics settings.
  • Editor: Added API to toggle preventing cross-scene references on/off.
  • Editor: Added EditorSceneManager.DetectCrossSceneReferences API.
  • Editor: ENABLE_PROFILER now works correctly in Editor for runtime script compilation.
  • 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 ability to hide the tetrahedron wireframe while editing light probe group.
  • GI: Added edit mode for light probe group to avoid accidental selection changes.
  • GI: Added Lightmapping.realtimeGI and Lightmapping.bakedGI editor APIs.
  • GI: Ambient Occlusion now has separate sliders for direct and indirect light. The default value is Ambient Occlusion on indirect light only. description
  • 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. description
  • GI: Improved light update performance.
  • GI: Improved mixing of realtime and baked shadows: removes shadow from the back-facing geometry, preserves bounce and contribution of other baked lights.
  • GI: Occlusion of the strongest mixed mode Light is now stored per Light Probe.
  • GI: Reflection probe convolution has been sped up (about 2x), and is now less noisy, particularly for HDR environments.
  • Graphics: A slice of 3D/2DArray can now be set as a render target (Graphics.SetRenderTarget depthSlice argument).
  • Graphics: Added a property to allow skipping the bounding box recalculation when setting the list of indices or triangles of a Mesh. This is useful for LODs that use a sliding window.
  • Graphics: Added GL.Flush API.
  • 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 Light.customShadowResolution and QualitySetting.shadowResolution to scripting API to make it possible to adjust the shadow mapping quality in code at run time on a per-light basis.
  • Graphics: Added makeNoLongerReadable argument to Texture3D.Apply and Texture2DArray.Apply APIs, to allow for the release of system memory.
  • 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 RenderTexture.GetNativeDepthBufferPtr for native code plugins.
  • Graphics: Added TextureDimension enum and Texture.dimension property.
  • Graphics: Added useLightProbes argument to Graphics.DrawMesh (defaults to true).
  • Graphics: DX11; rendering annotations now correctly appear on Windows Store platforms when using GPU debuggers.
  • Graphics: Implemented fast texture copies via Graphics.CopyTexture.
  • Graphics: Reduced render batch breaking overhead due to LOD fading.
  • Graphics: Support multithreaded (client/worker) rendering on iOS and OSX Metal devices.
  • IAP: Added support for fetching IAP products incrementally in batches. FetchAdditionalProducts method added to IStoreController.
  • Installer: DownloadAssistant will now warn users if they try to install components which require Unity without selecting UnityEditor component.
  • Installer: Mac Download Assistant will now write additional logs to ~/Library/Logs/Unity/DownloadAssistant.log.
  • Installer: WindowsEditor Installer will install Release Notes online shortcut to the Windows start menu.
  • iOS: Added support for new native rendering plugin interface.
  • iOS: Option for custom URL schemes added to Player Settings.
  • iOS/tvOS: Change to use relative symlinks for plugins when building to a related folder.
  • Multiplayer: Made matchName and matchSize serializable attributes so they can save on the network manager.
  • OpenGL: Optimized shader translation for matrix array accessing. This improves instancing performance.
  • 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: Added option to select exactly which UV channels the Texture Animation Module is applied to.
  • Particles: Added particle radius parameter for world collisions. Editor UI: description
  • Particles: Added Undo support when auto re-parenting sub-emitters.
  • Particles: Choosing a random start frame in the Texture Animation Module is now supported.
  • 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 a warning when using a staticially combined mesh on a BoxCollider.
  • Physics: Running the PhysX simulation step can now be skipped if not required by Rigidbodies or WheelColliders.
  • Physics2D: Added 'OneWayGrouping' property to PlatformEffector2D for group contacts.
  • Physics2D: Point editing is now allowed in Inspector for Edge/PolygonCollider2D.
  • Profiler: Added more profiling information for loading operations.
  • Profiler: Added toggle to exclude reference traversal in memory profile.
  • Scene Management: Added events sceneLoaded, sceneUnloaded and activeSceneChanged to SceneManager.
  • Scripting: Added cancel button to "Opening Visual Studio" progress dialog.
  • 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: COM no longer used to launch VisualStudio, resulting in better immediate feedback experience.
  • Scripting: Deprecated Application.stackTraceLogType; users should now use Application.SetStackTraceLogType/GetStackTraceLogType instead.
  • Scripting: For StacktraceLogtype.None only the message will now be printed (without file name or line number).
  • Scripting: Improved Object.Instantiate() performance.
  • 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).
  • Scripting: Serialization depth limit warning now prints the serialization hierarchy that triggered the warning.
  • Scripting: Stacktrace log type can now be set in PlayerSettings for various log types.
  • 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 ability to exclude shaders from automatic upgrade by having "UNITY_SHADER_NO_UPGRADE" anywhere in shader source file.
  • 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: Added UNITY_SAMPLE_TEX3D_LOD macro, for consistency with other LOD sampling macros.
  • Shaders: Engine and built-in shaders use five fewer shader keywords now, leaving more keywords for users. The following keywords are thus removed: SOFTPARTICLES_OFF, HDR_LIGHT_PREPASS_OFF, HDR_LIGHT_PREPASS_ON, SHADOWS_OFF, DIRLIGHTMAP_OFF.
  • 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.
  • Substance: Warning is shown when an input of a BakeAndDiscard ProceduralMaterial is being set at runtime.
  • tvOS: Added support for Analytics.
  • 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: ETC1+alpha support for UIImage on mobile platforms.
  • UI: Improved performance of MaskUtility functions.
  • 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 Graphic class.
  • UI: UI now sets the texelSize for use in custom shaders.
  • VR: Added support for the Oculus Rift Remote. It now presents itself to the input system as a joystick named "Oculus Remote".
  • 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: The Oculus OVRPlugin signature check now happens only for non-development, release builds.
  • WebGL: Incremental builds of generated C++ code are now supported.
  • Windows: Added "Copy PDB files" option in the Build Settings window. This way, you can control whether or not to copy debugging files.
  • Windows: Standalone player now can be run in Low Integrity Mode.
  • Windows Store: Added Bluetooth capability to Player Settings.
  • Windows Store: Added PlayerSettings.WSA.Declarations API for setting declarations for Package.appxmanifest.
  • Windows Store: Added support for UnityEngine.Ping class.
  • 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: Improved deserialization performance when using .NET scripting backend.
  • 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. See upgrade guide.
  • 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).
  • Windows Store: UnityWebRequest now supported for all SDKs.

Fixes

5.4.0f3 Release Notes (Delta since F2/RC2)

Fixes (Delta since f2/rc2)

Known Issues

To be addressed separately from 5.4.x

Revision: a6d8d714de6f

Changeset: a6d8d714de6f

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.