Burst Triangulator
Delaunay triangulation of point sets with constraints and mesh refinement capabilities. Burst Triangulator provides constrained triangulation, automatic mesh refinement, hole handling, alpha-shape filtering, and support for multiple coordinate types including fixed-point precision. Fully integrated with Unity's Jobs pipeline for high-performance computation.
com.andywiecko.burst.triangulator Install via UPM
Add to Unity Package Manager using this URL
https://www.pkglnk.dev/triangulator.git README Markdown
Copy this to your project's README.md
## Installation
Add **Burst Triangulator** to your Unity project via Package Manager:
1. Open **Window > Package Manager**
2. Click **+** > **Add package from git URL**
3. Enter:
```
https://www.pkglnk.dev/triangulator.git
```
[](https://www.pkglnk.dev/pkg/triangulator)Dependencies (2)
Used By (1)
README
A single-file package which provides Delaunay triangulation of the given set of points with constraints and mesh refinement.
✨ Supported Features
- Delaunay triangulation ᵈᵒᶜˢ
- Constrained triangulation ᵈᵒᶜˢ
- Mesh refinement (angle and area parameters) ᵈᵒᶜˢ
- Holes and restoring boundary (manual and auto) ᵈᵒᶜˢ
- $\alpha$-shape filter ᵈᵒᶜˢ
- Support for
Unity.Jobspipeline ᵈᵒᶜˢ - Input preprocessors ᵈᵒᶜˢ
- Input validation ᵈᵒᶜˢ
- Generic coordinates (
float2,double2,Vector2,int2, and fixed-pointQ31.32) ᵈᵒᶜˢ - Native support (low level API) ᵈᵒᶜˢ
- Managed input support ᵈᵒᶜˢ
- Dynamic triangulation ᵈᵒᶜˢ
- Triangle mesh utilities ᵈᵒᶜˢ
To view the documentation for the manual and scripting API access it online here or navigate to Documentation~/ and build this using docfx.json.
📐 Example results
As an illustrative example, we present the triangulation of Lake Superior with various refinement parameters. The top-left image shows the result without any refinement.

⏱️ Benchmark
The package utilizes the Burst compiler, which generates highly optimized native code using LLVM.
Below, you'll find a performance comparison for classic Delaunay triangulation (without refinement or constraints).
between this package and a few alternatives:
To see more benchmarks visit the documentation.

🚀 Quick start
Install the package and add using in your code
using andywiecko.BurstTriangulator;
and to triangulate unit box $[(0, 0), (1, 0), (1, 1), (0, 1)]$:
using var positions = new NativeArray<double2>(new[]
{
new(0, 0), new(1, 0), new(1, 1), new(0, 1)
}, Allocator.Persistent);
using var triangulator = new Triangulator(Allocator.Persistent)
{
Input = { Positions = positions }
};
triangulator.Run();
var triangles = triangulator.Output.Triangles;
📦 Dependencies
Required:
Optional:
🤝 Contributions
Found a bug? Please open an issue. You can find a list of known issues here. Interested in contributing to the project? Feel free to open an issue or submit a pull request. For updates on current and future work related to this package, check out the package project.
⚖️ License
- The code in this repository is licensed under the MIT License.
- The documentation in this repository is licensed under the CC BY 4.0 License.
No comments yet. Be the first!