Skip to content
ParaShape

Resolved records

What the record lanes (materials, layers, patterns, views, environment) evaluate to.

Lanes

The three key lanes (materials/layers/patterns) plus views[] and the document's sun/environment, all resolved — Changes.lanes only when this differs (by value) from the last one emitted (EngineSession.lanes), so a door that touched no lane record ships no lane data at all.

Used by: Changes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { ResolvedEnvironment } from "./ResolvedEnvironment.js";
import type { ResolvedLayer } from "./ResolvedLayer.js";
import type { ResolvedMaterial } from "./ResolvedMaterial.js";
import type { ResolvedPattern } from "./ResolvedPattern.js";
import type { ResolvedView } from "./ResolvedView.js";
import type { Sun } from "./Sun.js";

/**
 * The three key lanes (materials/layers/patterns) plus `views[]` and the
 * document's sun/environment, all resolved — `Changes.lanes` only when
 * this differs (by value) from the last one emitted
 * (`EngineSession.lanes`), so a door that touched no lane record ships no
 * lane data at all.
 */
export type Lanes = { 
/**
 * derived — every resolved `materials[]` record.
 */
materials: Array<ResolvedMaterial>, 
/**
 * derived — every resolved `layers[]` record.
 */
layers: Array<ResolvedLayer>, 
/**
 * derived — every resolved `patterns[]` record.
 */
patterns: Array<ResolvedPattern>, 
/**
 * derived — every resolved `views[]` record.
 */
views: Array<ResolvedView>, 
/**
 * derived — the resolved `settings.environment`; absent = none authored.
 */
environment?: ResolvedEnvironment, 
/**
 * derived — the resolved sun, off `environment`'s site+moment.
 */
sun?: Sun, };
fieldtypeoptionalclassdoc
materialsArray<ResolvedMaterial>noderivedderived — every resolved materials[] record.
layersArray<ResolvedLayer>noderivedderived — every resolved layers[] record.
patternsArray<ResolvedPattern>noderivedderived — every resolved patterns[] record.
viewsArray<ResolvedView>noderivedderived — every resolved views[] record.
environmentResolvedEnvironmentyesderivedderived — the resolved settings.environment; absent = none authored.
sunSunyesderivedderived — the resolved sun, off environment's site+moment.

ResolvedEnvironment

Used by: Lanes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

export type ResolvedEnvironment = { 
/**
 * intent — sky colour, CSS string.
 */
skyColor?: string, 
/**
 * intent — ground colour, CSS string.
 */
groundColor?: string, 
/**
 * intent — sky light intensity, lux.
 */
skyLux?: number, 
/**
 * identity — the resolved HDRI address (the `parameter`'s evaluated
 * value, or the literal `url`, H6). The renderer receives an address
 * and never resolves a parameter itself.
 */
hdriUrl?: string, 
/**
 * intent — HDRI brightness multiplier.
 */
hdriIntensity?: number, };
fieldtypeoptionalclassdoc
skyColorstringyesintentintent — sky colour, CSS string.
groundColorstringyesintentintent — ground colour, CSS string.
skyLuxnumberyesintentintent — sky light intensity, lux.
hdriUrlstringyesidentityidentity — the resolved HDRI address (the parameter's evaluated value, or the literal url, H6). The renderer receives an address and never resolves a parameter itself.
hdriIntensitynumberyesintentintent — HDRI brightness multiplier.

ResolvedLayer

A name a row/placement carries. No color/lineWidth — pure classification (owner decision 2026-09-04).

Used by: Lanes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { PerViewFlag } from "./PerViewFlag.js";

/**
 * A name a row/placement carries. No color/lineWidth — pure classification
 * (owner decision 2026-09-04).
 */
export type ResolvedLayer = { 
/**
 * identity — the node's own key.
 */
key: string, 
/**
 * intent — per-view visibility of every row/placement carrying this
 * layer, resolved from the layer's own `visible` property (same
 * `PerViewFlag` an object's placement carries). Absent = every view.
 */
visible: PerViewFlag, 
/**
 * intent — free-form record data.
 */
attributes?: Record<string, unknown>, };
fieldtypeoptionalclassdoc
keystringnoidentityidentity — the node's own key.
visiblePerViewFlagnointentintent — per-view visibility of every row/placement carrying this layer, resolved from the layer's own visible property (same PerViewFlag an object's placement carries). Absent = every view.
attributesRecord<string, unknown>yesintentintent — free-form record data.

ResolvedMaterial

Used by: Lanes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

export type ResolvedMaterial = { 
/**
 * identity — the node's own key.
 */
key: string, 
/**
 * intent — CSS colour; an unauthored one is the catalog default (`catalog/lanes.rs`).
 */
baseColor: string, 
/**
 * intent — texture image address.
 */
texture?: string, 
/**
 * intent — normal-map image address.
 */
normalTexture?: string, 
/**
 * intent — roughness-map image address.
 */
roughnessTexture?: string, 
/**
 * intent — metallic-map image address.
 */
metallicTexture?: string, 
/**
 * intent — displacement-map image address.
 */
displacementTexture?: string, 
/**
 * intent — displacement height multiplier.
 */
displacementScale?: number, 
/**
 * intent — ambient-occlusion-map image address.
 */
aoTexture?: string, 
/**
 * intent — physical mm of one texture tile along u; the renderer repeats `1/tile`.
 */
tileWidth?: number, 
/**
 * intent — physical mm of one texture tile along v; the renderer repeats `1/tile`.
 */
tileHeight?: number, 
/**
 * intent — base colour multiply factor.
 */
colorFactor?: number, 
/**
 * intent — 0..1 alpha.
 */
opacity?: number, 
/**
 * intent — 0..1 PBR roughness.
 */
roughness?: number, 
/**
 * intent — 0..1 PBR metallic.
 */
metallic?: number, 
/**
 * intent — alpha-cutout threshold; PRESENCE alone selects cutout mode.
 */
alphaTest?: number, 
/**
 * intent — CSS colour.
 */
emissive?: string, 
/**
 * intent — emissive-map image address.
 */
emissiveTexture?: string, 
/**
 * intent — emissive brightness multiplier.
 */
emissiveIntensity?: number, 
/**
 * intent — render both faces of a triangle.
 */
doubleSided?: boolean, 
/**
 * intent — 0..1 glTF transmission.
 */
transmission?: number, 
/**
 * intent — glTF volume thickness, mm.
 */
thickness?: number, 
/**
 * intent — glTF volume attenuation colour.
 */
attenuationColor?: string, 
/**
 * intent — glTF volume attenuation distance, mm.
 */
attenuationDistance?: number, 
/**
 * intent — index of refraction.
 */
ior?: number, 
/**
 * intent — 0..1 clearcoat layer strength.
 */
clearcoat?: number, 
/**
 * intent — 0..1 clearcoat roughness.
 */
clearcoatRoughness?: number, 
/**
 * intent — CSS colour.
 */
sheenColor?: string, 
/**
 * intent — 0..1 sheen roughness.
 */
sheenRoughness?: number, 
/**
 * intent — free-form record data.
 */
attributes?: Record<string, unknown>, 
/**
 * identity — the `patterns[]` record drawn where a section cuts this
 * material, by key.
 */
cutPattern?: string, };
fieldtypeoptionalclassdoc
keystringnoidentityidentity — the node's own key.
baseColorstringnointentintent — CSS colour; an unauthored one is the catalog default (catalog/lanes.rs).
texturestringyesintentintent — texture image address.
normalTexturestringyesintentintent — normal-map image address.
roughnessTexturestringyesintentintent — roughness-map image address.
metallicTexturestringyesintentintent — metallic-map image address.
displacementTexturestringyesintentintent — displacement-map image address.
displacementScalenumberyesintentintent — displacement height multiplier.
aoTexturestringyesintentintent — ambient-occlusion-map image address.
tileWidthnumberyesintentintent — physical mm of one texture tile along u; the renderer repeats 1/tile.
tileHeightnumberyesintentintent — physical mm of one texture tile along v; the renderer repeats 1/tile.
colorFactornumberyesintentintent — base colour multiply factor.
opacitynumberyesintentintent — 0..1 alpha.
roughnessnumberyesintentintent — 0..1 PBR roughness.
metallicnumberyesintentintent — 0..1 PBR metallic.
alphaTestnumberyesintentintent — alpha-cutout threshold; PRESENCE alone selects cutout mode.
emissivestringyesintentintent — CSS colour.
emissiveTexturestringyesintentintent — emissive-map image address.
emissiveIntensitynumberyesintentintent — emissive brightness multiplier.
doubleSidedbooleanyesintentintent — render both faces of a triangle.
transmissionnumberyesintentintent — 0..1 glTF transmission.
thicknessnumberyesintentintent — glTF volume thickness, mm.
attenuationColorstringyesintentintent — glTF volume attenuation colour.
attenuationDistancenumberyesintentintent — glTF volume attenuation distance, mm.
iornumberyesintentintent — index of refraction.
clearcoatnumberyesintentintent — 0..1 clearcoat layer strength.
clearcoatRoughnessnumberyesintentintent — 0..1 clearcoat roughness.
sheenColorstringyesintentintent — CSS colour.
sheenRoughnessnumberyesintentintent — 0..1 sheen roughness.
attributesRecord<string, unknown>yesintentintent — free-form record data.
cutPatternstringyesidentityidentity — the patterns[] record drawn where a section cuts this material, by key.

ResolvedPattern

Used by: Lanes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { LineFamily } from "./LineFamily.js";

export type ResolvedPattern = { 
/**
 * identity — the node's own key.
 */
key: string, 
/**
 * geometry — the drawn families, painted in array order. Never empty.
 */
lineFamilies: Array<LineFamily>, 
/**
 * intent — free-form record data.
 */
attributes?: Record<string, unknown>, };
fieldtypeoptionalclassdoc
keystringnoidentityidentity — the node's own key.
lineFamiliesArray<LineFamily>nogeometrygeometry — the drawn families, painted in array order. Never empty.
attributesRecord<string, unknown>yesintentintent — free-form record data.

ResolvedView

One evaluated views[] entry, tagged by its evaluated projection. Two variants, perspective and orthographic; style rides on every variant.

Used by: Lanes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { ResolvedStyle } from "./ResolvedStyle.js";

/**
 * One evaluated `views[]` entry, tagged by its evaluated `projection`. Two
 * variants, perspective and orthographic; `style` rides on every variant.
 */
export type ResolvedView = { "type": "perspective", 
/**
 * identity — the view node's own key.
 */
key: string, 
/**
 * geometry — eye position.
 */
position: [number, number, number], 
/**
 * geometry — look-at point, distinct from `position`.
 */
target: [number, number, number], 
/**
 * geometry — up direction, not parallel to (target - position).
 */
up: [number, number, number], 
/**
 * intent — vertical field of view, degrees, in (0, 180).
 */
fov: number, 
/**
 * intent — display style for this view.
 */
style: ResolvedStyle, } | { "type": "orthographic", 
/**
 * identity — the view node's own key.
 */
key: string, 
/**
 * geometry — eye position.
 */
position: [number, number, number], 
/**
 * geometry — look-at point, distinct from `position`.
 */
target: [number, number, number], 
/**
 * geometry — up direction, not parallel to (target - position).
 */
up: [number, number, number], 
/**
 * intent — world height the frame shows, mm; not an elevation.
 */
height: number, 
/**
 * intent — display style for this view.
 */
style: ResolvedStyle, };

ResolvedView — perspective

fieldtypeoptionalclassdoc
type"perspective"notag—
keystringnoidentityidentity — the view node's own key.
position[number, number, number]nogeometrygeometry — eye position.
target[number, number, number]nogeometrygeometry — look-at point, distinct from position.
up[number, number, number]nogeometrygeometry — up direction, not parallel to (target - position).
fovnumbernointentintent — vertical field of view, degrees, in (0, 180).
styleResolvedStylenointentintent — display style for this view.

ResolvedView — orthographic

fieldtypeoptionalclassdoc
type"orthographic"notag—
keystringnoidentityidentity — the view node's own key.
position[number, number, number]nogeometrygeometry — eye position.
target[number, number, number]nogeometrygeometry — look-at point, distinct from position.
up[number, number, number]nogeometrygeometry — up direction, not parallel to (target - position).
heightnumbernointentintent — world height the frame shows, mm; not an elevation.
styleResolvedStylenointentintent — display style for this view.

Sun

geometry — unit vector TOWARD the sun, Z-up. direction[2] < 0 is a night study, not an error.

Used by: Lanes.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * geometry — unit vector TOWARD the sun, Z-up. `direction[2] < 0` is a
 * night study, not an error.
 */
export type Sun = { 
/**
 * geometry — unit vector toward the sun, Z-up.
 */
direction: [number, number, number], 
/**
 * intent — sun light intensity, lux.
 */
lux: number, 
/**
 * intent — absent === the renderer's own daylight temperature (5500K).
 */
kelvin?: number, };
fieldtypeoptionalclassdoc
direction[number, number, number]nogeometrygeometry — unit vector toward the sun, Z-up.
luxnumbernointentintent — sun light intensity, lux.
kelvinnumberyesintentintent — absent === the renderer's own daylight temperature (5500K).

PerViewFlag

intent — properties.visible: absent/true = every view, false = none, a list = exactly those view keys. Empty list refused at evaluate. Render ships it as All(bool) against the session's active view (render::placement_shown); the free camera (no active view) is in no list.

Used by: Instance, ResolvedLayer, SectionEntity.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * intent — `properties.visible`: absent/`true` = every view, `false` = none,
 * a list = exactly those view keys. Empty list refused at evaluate. Render
 * ships it as `All(bool)` against the session's active view
 * (`render::placement_shown`); the free camera (no active view) is in no list.
 */
export type PerViewFlag = boolean | Array<string>;

One of:

  • boolean
  • Array<string>

LineFamily

Used by: ResolvedPattern.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

export type LineFamily = { 
/**
 * geometry — degrees CCW from hatch-space +X.
 */
angle: number, 
/**
 * geometry — a point the first line passes through, hatch space, mm.
 */
origin: [number, number], 
/**
 * geometry — slide along the line direction between lines, mm.
 */
shift: number, 
/**
 * geometry — distance across between lines, mm. Never zero.
 */
spacing: number, 
/**
 * geometry — SVG-spelled dash cycle: all positive, even draws, odd lifts.
 */
dashes?: Array<number>, 
/**
 * geometry — stroke width, mm.
 */
lineWidth?: number, 
/**
 * intent — CSS colour.
 */
color?: string, 
/**
 * geometry — dot mark diameter, mm.
 */
dotSize?: number, };
fieldtypeoptionalclassdoc
anglenumbernogeometrygeometry — degrees CCW from hatch-space +X.
origin[number, number]nogeometrygeometry — a point the first line passes through, hatch space, mm.
shiftnumbernogeometrygeometry — slide along the line direction between lines, mm.
spacingnumbernogeometrygeometry — distance across between lines, mm. Never zero.
dashesArray<number>yesgeometrygeometry — SVG-spelled dash cycle: all positive, even draws, odd lifts.
lineWidthnumberyesgeometrygeometry — stroke width, mm.
colorstringyesintentintent — CSS colour.
dotSizenumberyesgeometrygeometry — dot mark diameter, mm.

ResolvedStyle

Used by: ResolvedView.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
import type { Shading } from "./Shading.js";

export type ResolvedStyle = { 
/**
 * intent — authored background override, resolved from the view's
 * `properties`. Absent = the host's own default background.
 */
background?: string, 
/**
 * intent — authored display mode, resolved from the view's
 * `properties`. Absent = the host's own default shading.
 */
shading?: Shading, 
/**
 * intent — LINEAR multiplier on the metered exposure, realistic only.
 */
exposure?: number, 
/**
 * intent — authored shadow-study overlay, resolved from the view's
 * `properties`. Absent = off.
 */
shadows?: boolean, 
/**
 * intent — authored world-axes visibility, resolved from the view's
 * `properties`. Absent = the host default (on).
 */
axes?: boolean, };
fieldtypeoptionalclassdoc
backgroundstringyesintentintent — authored background override, resolved from the view's properties. Absent = the host's own default background.
shadingShadingyesintentintent — authored display mode, resolved from the view's properties. Absent = the host's own default shading.
exposurenumberyesintentintent — LINEAR multiplier on the metered exposure, realistic only.
shadowsbooleanyesintentintent — authored shadow-study overlay, resolved from the view's properties. Absent = off.
axesbooleanyesintentintent — authored world-axes visibility, resolved from the view's properties. Absent = the host default (on).

Shading

Shaded is the self-lit matcap editing look and the default; Realistic is the only mode that materialises settings.environment; Wireframe is the line overlay.

Used by: ResolvedStyle.

// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.

/**
 * `Shaded` is the self-lit matcap editing look and the default; `Realistic`
 * is the only mode that materialises `settings.environment`; `Wireframe` is
 * the line overlay.
 */
export type Shading = "shaded" | "wireframe" | "realistic";

Values: "shaded", "wireframe", "realistic".

📖 7 min read