# =============================================================================
# AEC View Style — TEMPLATE (v2)
# -----------------------------------------------------------------------------
# Mental model: this file is CSS for an AEC view.
#
# AEC model ─► HTML (the WHAT — geometry, programme, semantics)
# This file ─► CSS (the HOW — surfaces, light, atmosphere, image)
#
# CSS does not know whether a `<div>` is a navigation, an article, or a
# card. It only knows colour, font, border, filter. This file follows the
# same discipline: it says nothing about what the model IS (residential,
# hospital, master-plan, concept-phase, planning-submission). It only
# says how any model dropped into it should LOOK.
#
# If a field tempts you to describe the project — its programme, its
# phase, its audience, its location, its scale — that field belongs in a
# different document (see AEC_VISUALISATION.md), not here.
# -----------------------------------------------------------------------------
# Schema : alpha
# Filename : <kebab-name>.yaml
# Consumers : LLM-driven render pipelines, real-time engines, prompt
# composers. The bottom of this file shows the canonical
# YAML → prompt translation.
# =============================================================================
# The preset is identified by its FILENAME (kebab-case, .yaml). No
# `name` or `description` fields — the look documents itself.
# ---------------------------------------------------------------------------
# 1. style (CSS analogue: theme)
# ---------------------------------------------------------------------------
# The rendering register. Top-level visual decision; every other field
# is interpreted in its context.
#
# photoreal full PBR, calibrated light
# conceptual simplified materials, expressive light
# watercolour non-photoreal painterly, hand-drawn feel
# sketch line-driven, minimal colour
# white-model untextured grey + glass
# photomontage composited into real site photo
# line-drawing orthographic / axonometric line work
# technical-illustration construction-style cutaway
# ---------------------------------------------------------------------------
style: <enum>
# ---------------------------------------------------------------------------
# 2. lighting (CSS analogue: color)
# ---------------------------------------------------------------------------
# The light SOURCE. What the sun is doing.
# ---------------------------------------------------------------------------
lighting:
timeOfDay: <enum> # dawn | morning | midday | afternoon |
# golden-hour | dusk | twilight | night
weather: <enum> # clear | partly-cloudy | overcast |
# rain | snow | fog
sunAzimuth: <deg> # 0-360, optional unless analytical
sunAltitude: <deg> # 0-90, optional unless analytical
mood: <free-text> # calm | dramatic | optimistic | sombre |
# warm | clinical | etc.
# ---------------------------------------------------------------------------
# 3. surroundings (CSS analogue: background)
# ---------------------------------------------------------------------------
# What the model is rendered AGAINST. This is the visual backdrop, NOT
# the project's location. "Tropical coast" and "dense urban" are visual
# scenes; "Caribbean cruise port" or "downtown LA office tower" are
# projects and DO NOT belong here.
# ---------------------------------------------------------------------------
surroundings:
scene: <enum> # rural | suburban | dense-urban |
# historic-core | tropical-coastal |
# waterfront | desert | alpine |
# landscape | industrial | abstract-void
vegetation: <free-text> # "mature deciduous", "palm-dominant", "none"
terrain: <free-text> # "flat", "hilly-coastal", "granite outcrop"
water: <free-text> # optional, "tidal river", "fjord", "none"
ground-cover: <free-text> # optional, "stone setts", "moss", "sand"
sky: <free-text> # optional, "blue-violet gradient", "high cumulus"
# ---------------------------------------------------------------------------
# 4. materials (CSS analogue: per-class background)
# ---------------------------------------------------------------------------
# Surface treatment per slot. Slots are open-ended — add or drop as the
# look demands. Values may be free text, a `{token.ref}` from a sister
# DESIGN.md, or a vendor asset id.
#
# At `style: white-model` this block is typically omitted entirely.
# ---------------------------------------------------------------------------
materials:
facade: <free-text | token-ref>
glazing: <free-text | token-ref>
roof: <free-text | token-ref>
ground: <free-text | token-ref>
accent: <free-text | token-ref>
landscape-soft: <free-text | token-ref>
# additional slots permitted: interior-floor, interior-wall,
# interior-ceiling, water-feature, signage, etc.
# ---------------------------------------------------------------------------
# 5. palette (CSS analogue: filter: hue-rotate /
# saturate / contrast)
# ---------------------------------------------------------------------------
# Image-level colour treatment. Applied AFTER lighting and materials
# resolve. This is the global colour grade.
# ---------------------------------------------------------------------------
palette:
temperature: <enum> # cool | neutral | warm
saturation: <enum> # desaturated | muted | natural | vivid
contrast: <enum> # low | natural | high
dominant-hue: <free-text> # optional, "blue-violet", "amber", "monochrome"
# ---------------------------------------------------------------------------
# 6. atmosphere (CSS analogue: filter: blur /
# backdrop-filter)
# ---------------------------------------------------------------------------
# What's in the AIR between camera and model. Affects depth perception
# and softness without touching surfaces or light source.
# ---------------------------------------------------------------------------
atmosphere:
haze: <enum> # none | light | heavy
particulate: <enum> # none | dust | mist | rain | snow | embers
depth-fog: <enum> # none | subtle | strong
visibility: <free-text> # optional, "infinite", "300m", "milky"
# ---------------------------------------------------------------------------
# 7. post-processing (CSS analogue: filter: grain / blur /
# drop-shadow / box-shadow)
# ---------------------------------------------------------------------------
# Screen-space effects added on top of the rendered image.
# ---------------------------------------------------------------------------
post-processing:
exposure: <enum> # underexposed | calibrated | overexposed
grain: <enum> # none | subtle | film | heavy
bloom: <enum> # none | subtle | strong
vignette: <enum> # none | subtle | strong
edge-treatment: <enum> # soft | natural | sharp | hand-drawn-line
# =============================================================================
# Prompt assembly (canonical)
# -----------------------------------------------------------------------------
# Pipelines convert this YAML to a natural-language prompt using the rule
# below. The model, camera, and output format come from the pipeline,
# not from this file.
#
# Template:
#
# "Render the supplied model as a {style} image. Place it in
# {surroundings.scene} surroundings — {surroundings.vegetation},
# {surroundings.terrain}{, water if present}{, ground-cover if present}.
# Sky: {surroundings.sky}.
# Light it as {lighting.timeOfDay}, {lighting.weather};
# mood: {lighting.mood}.
# Surfaces: {materials.facade} facades, {materials.glazing} glazing,
# {materials.roof} roofs, {materials.ground} ground, {materials.accent}
# accents, {materials.landscape-soft} planting.
# Colour grade: {palette.temperature}, {palette.saturation},
# {palette.contrast}{, dominant-hue if present}.
# Atmosphere: {atmosphere.haze} haze, {atmosphere.particulate},
# {atmosphere.depth-fog} depth fog.
# Post: {post-processing.exposure} exposure, {post-processing.grain}
# grain, {post-processing.bloom} bloom, {post-processing.vignette}
# vignette, {post-processing.edge-treatment} edges."
#
# A pipeline is free to use a richer template; this is the minimum
# faithful translation.
# =============================================================================