# REPORT — 10-aurora-glass 「澜光 · LUMINA」

## Concept

A single liquid-glass lens glides across a field of slowly drifting aurora light and a set of
frosted glass UI cards; wherever it passes it bends, magnifies and colour-fringes what is behind
it, revealing the product. It is a launch film for an invented AI companion, **澜光 / LUMINA**
(brand line 「LUMINA · 灵光系统」, tagline 「与光同思」) — the mood is the 2025–26 "liquid glass"
aesthetic: slow, translucent, expensive.

## Beat sheet (cue sheet — picture and sound read the same times, see parts/cues.mjs)

| time | picture | sound |
|---|---|---|
| 0.00 | deep indigo field, 5 aurora blobs already drifting; a light seed glows at centre | pad swells in from silence |
| 0.55 | **hook**: soft bloom pulse, then two soft light ripples expand outward | soft bell |
| 1.20 / 1.36 / 1.50 / 1.66 | four frosted glass cards rise on a 5-frame stagger with anticipation → travel → elastic settle | four tiny ticks, alternating pan |
| 2.40 | status chip 「灵感已就绪」 floats in | pop |
| 3.55 | micro-UI toggle flips ON (overshoot) inside 「常亮模式」 | two clicks |
| 4.55 | riser begins; aurora swells brighter | riser + pink noise |
| 5.15 | **liquid-glass lens** glides in from lower-left, growing | whoosh up |
| 5.70 | lens crosses the toggle card — its text, pill and knob visibly refract and magnify | — |
| 6.30 | lens crosses the open centre (light motes bend through it) | — |
| 6.85 | **HERO**: lens crosses the glass-card cluster, magnifying the ring card and the waveform; bloom + chromatic rim | impact + two bells + chirp |
| 7.25 | lens glides off the right, shrinking | whoosh down |
| 7.60–8.62 | type assembles: LUMINA glass pill → hairline → 「澜光」 (per-glyph 3-frame stagger) → 「与光同思」 → corner captions | tick, warm stab, bell |
| 8.70–10.00 | **composed end hold** (~1.3 s), full brand lock-up, everything still alive | pad resolve, fade |

## How each signature feature is realised

- **大面积高斯模糊彩色光斑作底** — parts/aurora.mjs. Five analogous-hue blobs (violet → indigo →
  blue → cyan → magenta) drawn with radial falloff at 1/4 resolution and upscaled, which reads as
  an 80–150 px gaussian but costs almost nothing. Each blob rides a closed-form Lissajous path with
  23–41 s periods and breathes in radius (±8.5 %) and alpha (±14 %), so the field blends into a mesh
  gradient. A second enlarged additive pass gives bloom without a second blur.
- **磨砂玻璃卡片** — parts/glass.mjs. Each card = soft drop shadow + a clipped sample of the aurora
  blurred through a real ctx.filter = blur(17px) at half resolution (≈34 px at output scale, i.e.
  the backdrop-filter recipe), plus a second additive backdrop pass so the glass stays luminous
  instead of grey. Parallax: the backdrop sample is offset per card by its depth.
- **5–10 % white fill + 1 px white-30 % inner stroke + 大圆角** — glassPanel(): rgba(255,255,255,0.05)
  fill, a 1.4 px rgba(255,255,255,0.30) inner highlight inset by 0.75 px, radii 32–39 px, plus a top
  sheen gradient.
- **邻近色低对比配色** — palette is violet / indigo / blue / cyan / magenta only; no complementary
  clash, no pure white fields. Dark base #0A0A1C with bright blobs (dark-ground preference).
- **全局 3–5 % 噪点防 banding** — filmGrain() in parts/film.mjs: a seeded, tile-based value-noise
  grain at overlay — one coarse pass (cell 2, amount 0.105) for filmic texture and one very fine pass
  (cell 1, amount 0.032) as a banding dither. Both drift slowly on a 256 px tile, so the grain never
  boils and H.264 can still predict it.
- **缓慢呼吸感节奏 / 文字只用 opacity+8px 位移** — every entrance is anticipation → travel → elastic
  settle; the type block rises exactly 8–9 px with easeOutQuint and a 3-frame per-glyph stagger.
  Nothing moves fast except the hero lens pass.
- **WOW: 真折射的 Liquid-Glass 透镜** — parts/lens.mjs. One real per-pixel refraction pass: a radial
  single-element profile (centre magnified 1.52×, edge continuous) with bilinear resampling, plus a
  per-channel radial offset that grows as r³ so red/blue fringes appear only at the rim, a rim
  brightening for a thick glass edge, a 3 px feathered alpha edge, and then a specular rim arc, an
  answering lower-right arc and an internal specular bloom. It refracts the aurora, the cards and the
  light motes together, because it samples the composited scene.
- **Fine structure so the lens has something to bend** — a seeded light-mote field (165 specks, 11 of
  them large soft bokeh) drifts inside the aurora; without it the lens crossing the empty centre would
  read as a grey disc.

## Technical route

Canvas 2D only — no WebGL, no vendored library, no CDN. Per frame: aurora → half-res backdrop blur →
cards + micro-UI → hero bloom → the lens refraction pass → blit through a slow camera breath → grain →
vignette → type. All static layers (grain tiles) are precomputed once; the lens's scratch canvases and
ImageData are allocated once and reused. window.renderAt(t) is a pure function of t.

Sound is generated by audio.py from the shared synthesis toolkit: an Am–F–C–G pad bed with a sub root
and a slow high shimmer layer, plus bells, ticks, whooshes, a riser and a soft impact, all placed on
the same cue sheet as the picture.

## Check numbers (from the final render)

| check | value |
|---|---|
| duration | exactly 10.000 s |
| resolution | 1920 × 1080 |
| fps | 30 |
| video | H.264 MP4, ~12.5 Mbps (limit 8–25) |
| audio | stereo AAC 48 kHz |
| integrated loudness | ≈ −13.3 LUFS (target −14 ± 2) |
| true peak | ≈ −3.2 dBTP (limit ≤ −1) |
| black frames | 0 |
| console errors / 404s | 0 |
| renderer verification line | OK, no PROBLEMS |
| rhythm report | **no dead spans**; overall mean Δ ≈ 0.94; quietest window 0.64 % of pixels moved; global min Δ ≈ 0.34 (no stuck frame) |
| per-frame render cost | ≈ 0.55 s/frame including capture (well inside budget) |

## Honest top-3 weaknesses

1. **The centre of the frame is empty for a long stretch (2–5 s).** The composition is deliberately a
   four-corner cluster with a negative-space corridor kept clear for the title, but at 3–4 s that
   corridor is genuinely bare — only aurora and motes. It is defensible as breathing room, but a
   stronger film would put one more quiet element (a slowly orbiting glass ring, a horizon hairline)
   in the lower centre to anchor it.
2. **The lens pass over the open centre (~6.3 s) is the weakest moment of the hero.** The light motes
   make it read as glass rather than fog, but a smooth-gradient field still gives the lens little to
   magnify compared to when it crosses a card. Routing the lens so it is only ever over content would
   be better; I chose the two-content-pass arc as the compromise.
3. **The micro-UI is illustrative rather than functional.** The chat bubbles, waveform, ring and toggle
   are well-drawn and animate correctly, but they do not tell a progressing story between 3.5 s and
   5.1 s — the toggle click is the only state change in that 1.6 s. More choreographed UI state changes
   (a message sending, the ring filling in two steps) would raise the "product film" credibility. With
   more time I would also hand-draw a bespoke Chinese display face rather than relying on PingFang SC
   at weight 200.

## Self-scores (1–10; 6 = template, 8 = high-end agency, 9 = award shortlist)

| axis | score | note |
|---|---|---|
| style fidelity | 9 | every signature technique present and correct; the style is nameable in one second |
| concept / wow | 8 | the refractive lens with real dispersion is a strong hero; the story around it is conventional |
| motion craft | 8 | three-phase entrances, stagger, elastic settling, element-led lens transition; the mid-section is intentionally calm |
| design & typography | 8 | strong grid, hierarchy and negative space; PingFang 200 is elegant but not bespoke |
| finish & texture | 9 | no banding, no aliasing, no thin-line shimmer, grain is coarse and stable, colours stay in adjacent hues |
| sound & sync | 8 | cue-locked, genre-correct ambient pad; deliberately understated |
| technical | 9 | deterministic, console-clean, 12.5 Mbps, exactly 10.000 s, no dead spans, ~0.55 s/frame |

**Overall: ~8.4 — a solid high-end-agency result, short of award-shortlist on concept novelty.**
