Inconsistent behaviours in UI between polyline component and equivalent immediate drawing
Heya! 🌸
As discussed on the server, there are some inconsistencies between the polyline component and its immediate drawing equivalent when used for UI.
Reproduction steps
To reproduce the following observations:
- Add a Canvas to your scene
- Set its render mode to Screen Space - Camera
- Add a child Game Object to the Canvas with the polyline component

- Add a child GameObject to the Canvas with a custom polyline script that uses the local matrix and the same inner parameters. Example:
using Shapes;
using UnityEngine;
using ScaleMode = Shapes.ScaleMode;
public class ImmediatePolyline : MonoBehaviour {
private PolylinePath p;
private void Awake() {
Draw.LineThicknessSpace = ThicknessSpace.Meters;
Draw.LineGeometry = LineGeometry.Flat2D;
Draw.BlendMode = ShapesBlendMode.Transparent;
Draw.ScaleMode = ScaleMode.Uniform;
Draw.PolylineJoins = PolylineJoins.Miter;
p = new PolylinePath();
p.AddPoint(new Vector2(-100, -100f));
p.AddPoint(new Vector2(100, 100f));
}
private void OnEnable() => OnPostRenderSubscribe();
private void OnDisable() => OnPostRenderUnsubscribe();
private void DrawShapes(Camera cam) {
Draw.Matrix = transform.localToWorldMatrix;
Draw.Polyline(p, false,5f, Color.white);
Draw.ResetMatrix();
}
private void OnPostRenderSubscribe() {
Camera.onPostRender += DrawShapes;
}
private void OnPostRenderUnsubscribe() {
Camera.onPostRender -= DrawShapes;
}
private void OnDestroy() {
p.Dispose();
}
}
Additional notes:
- It works correctly outside UI
- I managed to reproduce it with and without URP
Observations
Differences in thickness
The polyline drawn through immediate drawing:

The polyline drawn with the Polyline component:

Differences in scaling
The immediate-drawn polyline with 0.2 and 3 x-scale:


The component polyline with 0.2 and 3 x-scale:


The immediate-drawn polyline's thickness is unaffected by scale changes (while the component polyline's thickness is only affected by scale inferior to 1), also the end caps are oriented differently as a result of the change in scale, see the difference at 3 x-scale:

Flat2D Immediate Drawing Polyline tries facing the camera
Same setup from the front:

From the side:

---
Hope this was clear enough! Have a nice day ✨