com.unity.cloud.draco 5.0.0
Notes: processedReleased January 17, 2024
Browse versions
PreviousNext
Unity Compatibility
Minimum Unity: 2020.3
Package Dependencies
✨ 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
