# CREDITS — 05 · 3D 渲染系 「绵朵 · 云朵软糖」

## Visuals

**All 3D geometry, materials, lighting, shading and compositing in this film are original
code written for this demo.** Nothing is copied from another project, and no third-party
shader, model, HDRI or texture file is used. The cloner field, the superellipsoid "cloud
gummy", the chrome halo, the studio cyc, the procedural environment map and every
post-processing pass (motion-blur accumulation, depth of field, bloom, ACES tonemap,
vignette, dither, film grain) are built in `parts/scene.mjs` and `parts/post.mjs`.

- `parts/three.module.js` + `parts/three.core.js` — three.js **r180** (MIT licence),
  vendored locally from `https://cdn.jsdelivr.net/npm/three@0.180.0/build/`.
  Used as the WebGL renderer and scene-graph library only. No addon modules are used
  (no EffectComposer, no OrbitControls, no RectAreaLight uniforms, no loaders):
  the post-processing stack is hand-written.
  *Note for the harness owner:* `shared/vendor/three.module.js` was incomplete — r180
  imports `./three.core.js`, which was not vendored, so any demo importing it failed
  with a 404. `three.core.js` has been added to `shared/vendor/` (and to this demo's
  `parts/`).
- `shared/ease.mjs` — project helper maths (easing, `mulberry32`, `valueNoise1D`), imported
  at runtime from `/shared/ease.mjs`. Part of this repository.

No font files are vendored. All type is set in system faces that ship with macOS:
「绵朵」 and the Chinese copy use **PingFang SC** (fallbacks: Hiragino Sans GB, Heiti SC);
the Latin lockup uses **Avenir Next** (fallback: Helvetica Neue, Helvetica). Both are
system fonts, not redistributed here.

No image, HDRI or video asset is used. The "HDRI" is generated in-page with three.js'
`PMREMGenerator` from a procedurally built studio scene (a vertical gradient dome plus four
emissive soft-box slabs); the backdrop, floor and grain textures are drawn into canvases at
load time with deterministic seeded noise.

## Sound

`audio.py` synthesises the entire soundtrack at render time using only the Python standard
library — no samples, no loops, no external audio. Every sound is generated from the
primitives in `shared/audio.py` (oscillators, noise, envelopes and the `Timeline` mixer,
all part of this repository). Seeded PRNG only, so the mix is bit-identical every run.

## Brands and trademarks

「绵朵 / MIANDUO」, the product name 「云朵软糖」 and the tagline 「一口落在云上」 are invented
for this film. No real brand, logo or trademark appears anywhere in the frame or the audio.

## Licence summary

| item | licence |
|---|---|
| demo code (`parts/*.mjs`, `index.html`, `audio.py`) | original work, author's own |
| three.js r180 | MIT |
| `shared/ease.mjs`, `shared/audio.py` | part of the MG-15 harness repository |
| PingFang SC / Avenir Next | system fonts supplied by macOS, not redistributed |
