Common Properties

Every shape type shares these properties. They are controlled per-layer in the editor and stored in the ShapeData struct (144 bytes, GPU-aligned).

PropertyRangeDescription
colorRGBA float4Fill color with alpha. Alpha of 0 hides the fill but glow/outline can still render.
glowIntensity0 – 10Brightness of the outer glow emanating from the shape boundary.
glowSize0 – 1Radius of the glow falloff. Larger values produce a wider, softer glow.
feather0 – 0.1Edge softness. 0 = hard pixel-perfect edges (bypasses AA), higher = softer.
outlineColorRGBA float4True outline color. When alpha > 0, renders an outward border ring around the fill.
outlineThickness0 – 0.1Width of the true outline band (independent from hollow thickness).
hollowThickness0 – 0.50 = filled shape. >0 = hollow/donut mode showing only a ring of this width.
positionfloat2Center position in normalized UV space (0,0 = screen center).
rotation0 – 360°Rotation in degrees.
scalefloat2Scale in X and Y. Non-uniform scaling stretches the shape.

Circle

The simplest SDF primitive. A perfect circle defined by a single radius. Use with hollow mode for rings, or as a boolean base for complex cutout patterns.

ParameterDescription
No type-specific parameters. Circle size is controlled entirely by scale.
Tip

For a simple dot sight, use a Circle with a small scale, feather at 0, and no glow. For a soft aim dot, increase feather to 0.02–0.04.


Ring

A circle with a fixed annular width. Unlike a hollow Circle, Ring calculates its SDF as a true torus cross-section, producing cleaner glow behavior on both the inner and outer edges.

ParameterRangeDescription
thickness0.001 – 0.5Width of the ring band. Small values create thin halos; large values create wide bands.

Polygon

A regular polygon with 3 to 8 sides and optional corner rounding. Covers the full range from triangles through octagons. With 4 sides this becomes a square/diamond; with high corner radius on 4 sides, a rounded rectangle.

ParameterRangeDescription
sides3 – 8 (integer)Number of polygon sides. 3 = triangle, 4 = square/diamond, 5 = pentagon, 6 = hexagon, etc.
cornerRadius0 – 0.1Rounds the polygon corners. Higher values produce increasingly rounded shapes.
Replaces Box & RoundedBox

Polygon with 4 sides and cornerRadius = 0 produces a perfect box. Increasing the corner radius gives you a rounded box. Rotate 45° for a diamond. One shape type covers all rectangular and rounded-rectangular use cases.


LineBurst

Creates multiple lines or rays from the center. Two distribution modes offer very different looks from the same shape type. This is the workhorse shape for crosshair designs.

ParameterRangeDescription
modeThrough Center / RadialThrough Center: Lines pass through center (180° distribution). Radial: Rays extend outward from center (360° distribution).
count1–12 (TC) / 1–120 (Radial)Number of lines or rays.
thickness0.001 – 0.1Width of each line/ray.
startEndTypeFlat / Rounded / TaperedShape of the line start cap.
endEndTypeFlat / Rounded / TaperedShape of the line end cap. Only available for Through Center mode with count = 1.
taperAmount0 – 1For tapered ends: 0 = full sharp point, 1 = no taper (flat).

Through Center Mode

Lines pass through the center point and extend equally in both directions. With count = 1 you get a single line; count = 2 gives a classic crosshair (+). Lines are distributed evenly over 180°.

Radial Mode

Rays emanate outward from the center like a starburst. They are distributed over 360° and only extend in one direction (outward). With a high count (60–120) and thin lines, this creates sunburst or radar-sweep patterns.

Replaces Cross & Line

The legacy Cross and Line shape types are deprecated. Use LineBurst with count = 2 (Through Center) for a cross, and count = 1 for a single line.


Chevron

A V-shaped or arrow-shaped indicator. Useful for directional markers, threat indicators, or decorative accents around other shapes.

ParameterRangeDescription
angle10° – 170°Opening angle of the V shape. Small angles produce tight arrows; large angles produce wide shallow Vs.

Stadia

Ranging marks with major and minor tick graduations, like rifle scope reticles. Consists of a main horizontal line with configurable tick marks at regular intervals.

ParameterRangeDescription
lineThickness0.0001 – 0.05Main line thickness. Use 0.0001 for approximately 1-pixel lines.
majorHeight1.5 – 10.0Major mark height as a multiplier of the base height.
minorHeightRatio0.3 – 0.8Minor mark height as a ratio of major mark height.
majorThickness0.5 – 2.0Major mark thickness multiplier relative to the main line thickness.
majorCount1 – 20Number of major marks per side of center.
spacing0.01 – 0.2Distance between major marks.
minorCount0 – 6Number of minor ticks between each pair of major marks.
markDirectionUp / Down / BothWhich direction marks extend from the main line.
capStyleNone / Up / Down / CenterEnd cap style at the outermost mark positions.
symmetryModeSymmetric / PositiveOnly / NegativeOnlyWhether marks appear on both sides, right only, or left only.

ChamferBox

A box with beveled corners, producing an octagonal silhouette. Uses an exact SDF for correct glow behavior — the glow follows the chamfered boundary naturally, unlike a boolean group approach.

ParameterRangeDescription
chamferSize0 – 0.4Size of the corner bevel. 0 = sharp box corners. Larger values produce more beveled/octagonal shapes.

Custom Shape

Freeform shapes defined by cubic Bézier paths. Draw any shape you can imagine — crescents, stars, weapon silhouettes, logos — with full SDF quality including glow, outline, feathering, and boolean operations.

Drawing Workflow

  1. Select Custom as the shape type and click Edit Shape
  2. Drawing mode: Click to place corner control points. Click the first point to close the path.
  3. Editing mode: Drag points to reposition. Drag Bézier handles to curve segments. Press T to toggle a point between Corner, Smooth, and Symmetric types. Press Delete to remove the selected point.
  4. Press ESC to exit editing

Control Point Types

TypeBehavior
CornerSharp vertex. Handles can be moved independently for asymmetric curves meeting at a sharp angle.
SmoothHandles are constrained to opposite directions (tangent continuity) but can have different lengths.
SymmetricHandles are mirrored in both direction and length. Produces the smoothest curves.

SDF Generation

Custom shapes use a compute shader pipeline to generate an exact SDF:

Control Points
Cubic Béziers
ExactSDF Kernel
BlurCurvature Kernel
Texture2DArray

The ExactSDF kernel evaluates per-texel distance to the nearest cubic Bézier using a coarse search (16 segments per curve) followed by Newton-Raphson refinement (4 iterations). The result includes signed distance, second-nearest distance for concave glow, and analytical curvature for glow tapering at sharp tips.

Grid Snapping

When a layer's Snap to Grid is enabled, control point placement and vertex drags snap to the grid. Bézier handle drags remain free for precise curve control.


Gap Modes

Gaps carve patterns into shapes to create split crosshairs, grid overlays, and masked regions. Five modes are available on every shape type.

ModeDescription
NoneNo gap applied.
RadialAngular slices from center, like pie cuts. Creates split crosshair effects when applied to rings or circles.
GridRectangular grid overlay. Gap count and thickness control grid density.
LinesParallel line gaps. Useful for venetian-blind or scan-line effects.
CenterCutoutA centered shape (circle or 3–8 sided polygon) is subtracted from the middle. Creates donut or windowed patterns.

Gap Options


What's Next