Get Shapes 💖
 
Documentation
 
Changelog
 
Feedback
Bugs & Feature Requests
a real-time vector graphics library for Unity by Freya Holmér

After Shader Forge, I wanted to make something different.
It has bothered me for a long time that for some reason, html5 canvas is better at drawing primitives than Unity.
I really wanted something to help us make html5 canvas style crisp lines, discs, polylines and, well, Shapes!

so, here we are~


High-Quality Line Drawing

Clean lines of arbitrary thickness with advanced local anti-aliasing & thinness fading, in both 2D and 3D, with support for both world-space sizing as well as screen-space sizing
NaiveShapes

Local Anti-Aliasing

Naive implementations of lines are often locked to 1 pixel in width, without any proper anti-aliasing. Shapes has built-in local anti-aliasing, so even if your project doesn't have any kind of AA, Shapes will still draw lines smooth as heck~
RoundMiterBevel

Polylines

Polylines with configurable Round, Miter & Bevel joins

2D Shapes

2D shapes like discs, rings, arcs and rounded rectangles with vector graphics-style infinite resolution, drawn with a single quad

3D Shapes

3D shapes like spheres, cuboids, tori & cones

Immediate-Mode API

In addition to the components, Shapes has an Immediate-Mode API for code-based drawing, including scene view drawing support for cleaner looking debugging and gizmos

Limitations

• No SVG support, Shapes is not designed to be an SVG asset importer/exporter
• No ECS support, because it seems to change every week and I barely know how it works yet
• No UI support in overlay mode, though you can use camera-based or world-space UI to work around it
• No URP/HDRP support, at least not officially, but it does work! kinda~
• No arbitrary polygon filling yet! I really want to do this though, so, coming soon!
• Applying custom shaders is currently difficult unless you know how to code shaders, since every shape has a very specialized shader