Docs

Pipeline and Status Model

Every line of LumiDSL travels the same path, and it can stop early. That's by design: the parser is intentionally lenient so old files and future syntax still load.

Think of the pipeline as a production line:

  • the parser is the front desk: it takes your order,
  • the scene is the order form: it writes it down,
  • the runtime is the stage manager: it runs the show,
  • the renderer is the camera crew: it records what you see.
Status In plain terms
Recognized The front desk accepts the line: it parses without error. Nothing more.
Retained It's written into the scene, so you can read it back.
Runtime It changes how the scene behaves while it plays.
Renderer It changes what you see, or what gets exported.
Round-trips Parse → compile → parse keeps the meaning, so the file survives a save/load cycle.
Ignored Accepted politely, but nothing happens yet. Usually legacy or future syntax.
LumiDSL source -> parser AST -> Scene -> resolution -> renderer -> compiler

Four stops, from front desk to export:

  1. Parser reads the file into a syntax tree. It accepts a lot on purpose: it recognizes for and when, takes any name: value property, and skips lines it doesn't know.
  2. Scene is the data model. The Scene builder only retains the constructs it knows how to compile. Accepted by the parser but not kept here means the feature is "recognized" only.
  3. Runtime plays the scene: resolution, animations, expressions.
  4. Renderer draws it and exports it.

The compiler writes the canonical text form of the scene. It can't reproduce parser-only nodes or your original formatting, so a for loop is understood, but it isn't compiled into the scene and won't survive a save/load cycle.

Property Precedence

When an instance resolves a property, the highest available value wins:

  1. Animation override.
  2. Instance override.
  3. Blueprint property.

Effects merge separately: blueprint effects combine with instance effects and expanded parametric define effects.

Generic Properties

Any name: value line is accepted. That keeps files forward-compatible, but an unlisted property shouldn't be assumed to change anything. The property reference lists the properties with known runtime or renderer behavior.

imagine box
  shape: rectangle
  experimentalSetting: 42

create box

experimentalSetting parses and is kept in the Scene, but no runtime or renderer reads it. Accepted, and nothing happens yet.