ALINE

Tired of Unity's limited and inconsistent APIs for drawing?


Ever wanted to debug Burst or ECS jobs by drawing debug lines inside of them?

Want to draw even in a standalone game? Maybe for a level editor?

You can do all this and more with ALINE!


Feature highlights

  • More drawing primitives
  • Simple, flexible and consistent API
  • High performance. Often outperforming Unity's APIs significantly
  • Draw from inside Burst/ECS jobs, making debugging a breeze.
  • Render in standalone games. Excellent if you want to make a level editor, or have a sci-fi look in your game.
  • Perfectly anti-aliased lines even without MSAA or any other kind of post-processing
  • Supports varying line widths
  • Draw text labels over 3D objects.
  • Very well documented
  • Supports the built-in render pipeline, HDRP and URP
  • Discover more features on the package website
  • Or go directly to the documentation

ALINE is used by the A* Pathfinding Project - the most popular AI package in the Asset Store for years - to draw gizmos with high performance and quality.


Package website

Release Notes

View the full changelog at: https://arongranberg.com/aline/docs/changelog.html


1.7.9 (2026-02-19)

- Fixed WithDuration not working on the first frame of the game.

- Got rid of some small GC allocations.

- UPM packages are now signed with the Unity package signing system for improved security and authenticity verification.

- Fixed a memory leak in the Unity Editor caused by prefab references sometimes being kept in memory even though they shouldn't.

- Fixed ALINE not working when using foveated rendering in VR with URP.

- Added Draw.WireRing to draw ring (annulus) outlines in 3D.

- Added Draw.SolidRing to draw filled rings (annuli) in 3D.

- Added Draw.xz.WireRing to draw ring outlines in 2D.

- Added Draw.xz.SolidRing to draw filled rings in 2D.

- Added a new example scene showing off various drawing primitives in an animated sci-fi interface style.

- Fixed compatibility with URP 17.4.

- Increased minimum Unity version to 2022.3.61f2.


1.7.8 (2025-05-06)

- Fixed a minor GC allocation happening every frame when using URP.

- Improved performance in standalone builds when nothing is being rendered.

- Fixed a significant memory leak when starting unity in batch mode.


1.7.7 (2025-03-20)

- Added a new tutorial on using caching to improve performance.

- Fixed Draw.xz.SolidRectangle would render the rectangle in the XY plane, instead of the XZ plane.

- Fixed an exception could be thrown when cameras were rendered without a color target.

- Added PolylineWithSymbol.up, to allow you to configure the orientation of the symbols. Previously it was hardcoded to Vector3.up.

- Added an offset parameter to PolylineWithSymbol, to allow shifting all symbols along the polyline. This is useful for animations.

- Fixed various minor glitches that could happen when using PolylineWithSymbol.


1.7.6 (2024-10-14)

- Fixed a compatibility issue with the high definition render pipeline, accidentally introduced in 1.7.5.

- Fixed gizmos were not rendered when opening prefab assets in isolation mode and the high definition render pipeline was used.


1.7.5 (2024-08-06)

- Fixed a memory leak causing references to destroyed cameras to be kept around.

- Fixed Draw.xy.SolidCircle(float3,float,float,float) and Draw.xz.SolidCircle(float3,float,float,float) would render the circles in the wrong location.

- Reduced overhead when rendering gizmos.

- Each component type now shows up as a scope in the Unity Profiler when rendering their gizmos.

- Worked around a limitation in Unity's HDRP renderer caused errors to be logged constantly when forward rendering MSAA was enabled. Depth testing will now be disabled in this case, and a single warning will be logged.

Unfortunately there's nothing I can do to fix the underlying issue, since it's a limitation in Unity's HDRP renderer.


1.7.4 (2024-02-13)

- Fixed compatibility with HDRP render pipeline.

- Improved performance when there are many cameras rendered during the same frame.


1.7.3 (2024-02-07)

- Improved performance when there are lots of components inheriting from MonoBehaviourGizmos, but they do not actually override the DrawGizmos method.

- Fixed compatibility with Universal Render Pipeline package version 15 and 16 (regression in 1.7.2).


1.7.2 (2024-02-06)

- Improved performance of Draw.WireCylinder and Draw.WireCapsule.

- Fixed a memory leak that could happen if you used a lot of custom command builders.

- Added an option to the project settings to increase or decrease the resolution of circles.

- Improved compatibility with Universal Render Pipeline package version 17.


1.7.1 (2023-11-14)

- Removed "com.unity.jobs" as a dependency, since it has been replaced by the collections package.

- Added support for rendering gizmos while the scene view is in wireframe mode. This is supported in Unity 2023.1 and up.

- Added CommandBuilder.DashedLine.

[image in online changelog]

- Added CommandBuilder.DashedPolyline.

[image in online changelog]


1.7.0 (2023-10-17)

- Added a much more ergonomic way to draw using 2D coordinates. Take a look at \ref 2d-drawing for more info.

[image in online changelog]

- Deprecated several methods like Draw.CircleXY and Draw.CircleXZ to instead use the new 2D methods (Draw.xy.Circle and Draw.xz.Circle).

The old ones will continue to work for the time being, but they will be removed in a future update.

- Removed some shader code which was not supported on WebGL.

- Added CommandBuilder2D.WirePill

[image in online changelog]

- Added CommandBuilder.SolidTriangle

[image in online changelog]

- Added an overload of Draw.Polyline which takes an IReadOnlyList.

- Added CommandBuilder.PolylineWithSymbol

[image in online changelog]

- Added an overload of CommandBuilder.WireMesh that takes a NativeArray with vertices, and one with triangles.

- Improved look of Draw.ArrowheadArc when using a line width greater than 1.

- Improved performance when there are lots of objects in the scene inheriting from MonoBehaviourGizmos.

- Significantly reduced main-thread load when drawing in many situations by improving the Color to Color32 conversion performance.

Turns out Unity's built-in one is not the fastest.

In Burst I've cranked it up even more by using a SIMDed conversion function.

Common improvements are around 10% faster, but in tight loops it can be up to 50% faster.

- Improved performance of Draw.WireBox.

- Improved performance of drawing circles and arcs.

- Fixed name collision when both the A* Pathfinding Project and ALINE were installed in a project. This could cause the warning "There are 2 settings providers with the same name Project/ALINE." to be logged to the console.

- Fixed Draw.WireBox reserving the wrong amount of memory, which could lead to an exception being thrown.

- Fixed lines would be drawn slightly incorrectly at very shallow camera angles.

- Fixed a memory leak which could happen if the game was not running, and the scene view was not being re-rendered, and a script was queuing drawing commands from an editor script repeatedly.

Drawing commands will now get discarded after 10 seconds if no rendering happens to avoid leaking memory indefinitely.

- Fixed a memory leak which could happen if the game was not running in the editor, and no cameras were being rendered (e.g. on a server).

- Fixed shader compilation errors when deploying for PlayStation 5.

- Fixed circles with a normal of exactly (0,-1,0) would not be rendered.

- Changed RedrawScope to continue drawing items until it is disposed, instead of requiring one to call the scope.Draw method every frame.

- Allow a RedrawScope to be stored in unmanaged ECS components and systems.

- Fixed Draw.Arrow would draw a slightly narrower arrow head when the line was pointed in certain directions.

- Added an overload for 3x3 matrices: Draw.WithMatrix(float3x3).

- Changed the behaviour for RedrawScopes. Previously they would continue drawing as long as you called RedrawScope.Draw every frame.

Now they will continue drawing until you dispose them. This makes them just nicer to use for most cases.

This is a breaking change, but since RedrawSopes have so far been a completely undocumented feature, I expect that no, or very few people, use them.

- Fixed compatibility with XBox.

- Fixed only the base camera in a camera stack would render gizmos.


1.6.4 (2022-09-17)

- CommandBuilder.DisposeAfter will now block on the given dependency before rendering the current frame by default.

This reduces the risk of flickering when using ECS systems as they may otherwise not have completed their work before the frame is rendered.

You can pass AllowedDelay.Infinite to disable this behavior for long-running jobs.

- Fixed recent regression causing drawing to fail in standalone builds.


1.6.3 (2022-09-13)

- Added LabelAlignment.withPixelOffset.

- Fixed LabelAlignment had top and bottom alignment swapped. So for example LabelAlignment.TopLeft was actually LabelAlignment.BottomLeft.

- Fixed shaders would sometimes cause compilation errors, especially if you changed render pipelines.

- Improved sharpness of Draw.Label2D and Draw.Label3D when using small font-sizes.

[see online changelog for an image]

- Text now fades out slightly when behind or inside other objects. The fade out amount can be controlled in the project settings:

[see online changelog for an image]

- Fixed Draw.Label2D and Draw.Label3D font sizes would be incorrect (half as large) when the camera was in orthographic mode.

- Fixed Draw.WireCapsule and Draw.WireCylinder would render incorrectly in certain orientations.


1.6.2 (2022-09-05)

- Fix typo causing prefabs to always be drawn in the scene view in Unity versions earlier than 2022.1, even if they were not even added to the scene.


1.6.1 (2022-08-31)

- Fix vertex buffers not getting resized correctly. This could cause exceptions to be logged sometimes. Regression in 1.6.


1.6 (2022-08-27)

- Fixed documentation and changelog URLs in the package manager.

- Fixed dragging a prefab into the scene view would instantiate it, but gizmos for scripts attached to it would not work.

- Fixed some edge cases in Draw.WireCapsule and Draw.WireCapsule which could cause NaNs and other subtle errors.

- Improved compatibility with WebGL as well as Intel GPUs on Mac.

- Added warning when using HDRP and custom passes are disabled.

- Improved performance of watching for destroyed objects.

- Reduced overhead when having lots of objects inheriting from MonoBehaviourGizmos.

- It's now possible to enable/disable gizmos for component types via the Unity Scene View Gizmos menu when using render pipelines in Unity 2022.1+.

In earlier versions of Unity, a limited API made this impossible.

- Made it possible to adjust the global opacity of gizmos in the Unity Project Settings.

[see online changelog to view images]

Basic Information
Latest Version
1.7.9 (19 Feb 2026)
Publisher
Aron Granberg
Category
Tools/GUI
Size
308.2 KB
Price
€27.6
Asset Rating
(62)
Extended Information
Unity Versions
2020.3.48, 2022.3.62
Render Pipelines
BIRP URP HDRP
State
Published