style.palette, style.faces, gradients,
patterns, effects).
Shape families at a glance
Prism family (triprism, hexprism, octprism)
A regular n-gon extruded vertically. Each alias fixes the side count.
Effect pipeline (style.effects.effects)
Effects can now be expressed as an ordered list in addition to the
individual scalar fields. When the list is present it takes precedence.
Supported effect kinds
The same kind may appear multiple times in the list; each entry is applied
independently in order. This allows, for example, a tight inner glow
followed by a wide outer glow by listing
backglow twice with different
radii.
Priority rules
effects list is absent.
Wedge (shape: wedge)
A right-triangular prism on its side. The bottom is a rectangle at z=0; the
back edge (y=0) rises to full height h; the front edge (y=d) stays at z=0.
This produces a sloped ramp appearance.
Visible faces: slope (the inclined top face) and right (the right
triangular end face). The palette top colour fills the slope; right
fills the right triangle.
Custom path (shape: custom_path)
An arbitrary polygon base extruded vertically. The polygon is defined as an
SVG-subset path string (M/L/Z commands only) in geom.params.path. The
path coordinates are automatically normalised to fit the w × d footprint.
Face names:
top (the top polygon) and side0 … sideN-1 (vertical
walls, one per polygon edge). Wall shading follows the same nx ≥ ny →
right-palette, nx < ny → left-palette rule as prisms.
Fallback: if path is missing or unparseable the shape renders as a
box (rectangle footprint).
Semantic guide: any brand or domain-specific shape — shield (WAF),
pentagon (security), hexagon (API), star burst (CDN), custom logo outline.
Surface vocabulary
All shape families support the samestyle.faces overrides for per-face
fills, multi-stop gradients, and multi-layer strokes. Face names depend on
the shape:
style.faces schema.
Array shapes (shape: array1d / array2d / array3d)
Tiled cell grids: array1d is a linear row, array2d is a flat N×M grid,
array3d is a volumetric N×M×K grid. Each cell is a small iso box sharing
the same palette. Painter order is correct for the iso camera.
Rack (shape: rack)
A server rack: outer frame box with N horizontal slab shelves inside.
Use params.slots to set the shelf count.