com.unity.cloud.draco 5.0.0

com.unity.cloud.draco

Notes: processedReleased January 17, 2024

Browse versions

PreviousNext

Unity Compatibility

Minimum Unity: 2020.3

Features

  • Support for efficient self-managed encoding of multiple meshes. Users may use the advanced Mesh API to acquire readable mesh data for multiple meshes at once and pass the data on to new `DracoEncoder.EncodeMesh` overloads that accept said `MeshData`.
  • Vertex attributes information (draco identifier and dimensions) was added to `EncodeResult`
  • Support for iOS simulator
  • Support for Windows ARM64 architecture.
  • Support for Android x86\_64
  • Package samples
  • - *Draco Decoding*. Demonstrates how to decode Draco data at runtime.
  • - *Draco Encoding*. Demonstrates how to encode Draco data at runtime.
  • - *Scene/GameObject Encoding/Decoding via Menu*. Encode Meshes, GameObjects or entire Scenes via the Tools and Assets menu and have them decoded when the scene loads.
  • Support for decoding generic Draco attributes into arbitrary Unity vertex attributes (e.g. tangents) via [`DecodeMesh`](xref:Draco.DracoDecoder.DecodeMesh*)'s `attributeIdMap` parameter.

📈 Improvements

  • Decoding API was refactored and harmonized with encoding. The main entry point now is [`DracoDecoder.DecodeMesh`](xref:Draco.DracoDecoder.DecodeMesh*).
  • - [`decodeSettings`](xref:Draco.DecodeSettings) parameter encapsulates decode related settings.
  • - `attributeIdMap` parameter allows Draco attribute identifier to Unity vertex attribute assignment.
  • Encoding API was refactored and now utilizes [`QuantizationSettings`](xref:Draco.Encode.QuantizationSettings) and [`SpeedSettings`](xref:Draco.Encode.SpeedSettings).
  • Much faster encoding due to the use of the C# Job System (threads)
  • Faster encoding due to avoiding a full memory copy of the result
  • All encoding methods are async now
  • Readonly meshes now can be encoded in the Editor
  • Removed Editor-only `sync` parameter from `DracoMeshLoader.ConvertDracoMeshToUnity` to make API stable (regardless of environment/scripting defines)
  • WebGL native libraries are now installed via sub-packages
  • Minimum required Unity version was decreased to 2020.3 (possible because the WebGL version restriction was lifted with the sub-packages)
  • Automatic code formatting was applied to all source files
  • Consolidated split libraries into a single library named `draco_unity`
  • Updated Draco native library binaries to 3.1.0
  • Bumped Burst dependency to version 1.8.11
  • Renamed assembly definition `DracoEditor` to `Draco.Editor`
  • Renamed assembly definition `DracoRuntimeTests` to `Draco.Tests`
  • CI maintenance
  • ### Deprecated
  • `DracoMeshLoader` (in favor of [`DracoDecoder`](xref:Draco.DracoDecoder))
  • `DracoEncoder.EncodeMesh` overloads that have many individual settings parameters instead of [`QuantizationSettings`](xref:Draco.Encode.QuantizationSettings)/[`SpeedSettings`](xref:Draco.Encode.SpeedSettings).

API Changes

  • Obsolete console error about downgrading package for certain Unity versions
  • Menu items under `Tools` -> `Draco`. They can be brought back by installing the *Draco Tools Menu* package sample.

🔧 Bug Fixes

  • WebGL build with Unity 2022 and newer (due to WebGL sub-packages).
  • Destroying temporary copy (instead of original) GameObject when encoding selected GameObject from the menu
  • Reference assembly definitions in `DracoEncoder` by name instead of GUID to avoid package import errors.
  • Decoded mesh's bounds are calculated and returned/set accordingly.
  • Properly dispose NativeArrays in case of error (fixes atteneder/DracoUnity#53)
  • Point clouds' index buffer is properly initialized (fixes atteneder/DracoUnity#64)
  • Properly set root namespace on all assembly definitions
  • Compilation succeeds on non-supported platforms (with no API exposed)
  • Crash in async Editor import