Skip to content

v3.2.0

Compare
Choose a tag to compare
@andywiecko andywiecko released this 28 Aug 16:32
· 83 commits to main since this release

✨ What's new?

As the holidays come to an end, we're excited to announce a new release of the Burst Triangulator!

🆕 New generic types support!

In this version, there is finally support for the int2 and fp2 (fixed-point Q31.32) types. These types are crucial as they ensure that the triangulation result is independent of the hardware architecture, making them suitable for use in scenarios such as lockstep simulations (e.g., in multiplayer RTS games).

The supported features for each type in this version are as follows:

type delaunay constraints holes refinement preprocessors notes
float2 ✔️ ✔️ ✔️ ✔️ ✔️
Vector2 ✔️ ✔️ ✔️ ✔️ ✔️ Via float2 reinterpret
double2 ✔️ ✔️ ✔️ ✔️ ✔️
fp2 ✔️ ✔️ ✔️ ✔️ ✔️ Requires additional package1
int2 ✔️ ✔️ 🟡2 🟡3 Support up to $\sim 2^{20}$

Below the benchmark:

image

📝 Changelog

Added

  • Support for additional types: Vector2, int2, and fp2 (fixed-point in Q31.32 format). Note: fp2 requires an optional dependency. Refer to the manual for more details.
  • (Internal) Introduced TrianglesComparer to simplify triangle assertions in tests.
  • Args is now blittable and can be used in Burst-compiled static methods.
  • Enhanced validation logs to include position information.

Changed

  • (Internal) Various simplifications, minor performance improvements, refactoring, and additional code comments.

Deprecated

  • AsNativeArray() and ManagedInput have been deprecated for safety reasons. Use AsNativeArray(out Handle handle) instead. Refer to the manual for more information.

Fixed

  • Corrected the refinement of concentric shells segment splitting factor alpha.
  • Fixed safety issues with AsNativeArray.
  • Fully collinear input is now handled correctly.


Full Changelog: v3.1.0...v3.2.0


  1. This feature is available through an optional dependency. Users must install com.danielmansson.mathematics.fixedpoint. More info in the documentation.

  2. In the current implementation, holes are fully supported with Settings.AutoHolesAndBoundary. However, manual holes with int2 coordinates may not guarantee that the given hole can be created. An additional extension is planned in the future to support holes with manual floating-point precision for int2.

  3. Support for Preprocessor.COM with translation only is available.