> Current integration note — 2026-10-23: the homepage now opens the real China map first, using `surface-v4-clear02/`. Its runtime relief multiplier is 0.0020 (`china-scene.ts`); the previous scales and budgets below are historical measurements, not measurements of the current build. The old miniature landmark meshes are currently removed. The current overview does load the later broadleaf canopy implementation with `canopy-v1/forest-points.json` and the `wulingyuan-region-01` tree atlas; it is an artistic distant vegetation layer, not surveyed trees. Current camera, retained-canvas and resource measurements are recorded in `docs/qa/china-entry-01/`.

# Daylight natural relief

The production `overviewStyle: 'natural'` route uses a real displaced terrain mesh, rather than a photograph mounted in 3D. `china-scene.ts` owns terrain, materials, projected rivers and the outline; `world-renderer.ts` owns its perspective camera, controls, visibility and rendering lifecycle. Old editorial scene treatment remains available to its existing routes.

## Geographic assets

- `china-relief.i16`: 721 × 481 signed little-endian 16-bit elevations in metres, WGS84 72–136°E / 17–55°N. Resampled from 35 original Mapzen/Terrarium zoom-5 tiles on 2026-10-22. Original tile URLs, hashes, bounds and encoding are in `china-relief.json`. Provider attribution is retained in `/world/TERRAIN_ATTRIBUTION.md`; the public registry is https://registry.opendata.aws/terrain-tiles/ .
- The render field applies two fixed `[1,2,1] × [1,2,1]` binomial reconstruction passes. Exactly the same filter is used in the offline texture preparation and the runtime mesh. It removes coarse sampling spikes by averaging neighboring source elevations, without generating mountains.
- The Lambert conformal conic projection is identical for the mesh, texture, river lines, outline and every destination coordinate. Central meridian: 105°E; standard parallels: 25°N / 47°N. Source coastline and country geometry come from the project's Natural Earth data (`/geo/sources.json`). Taiwan and Hainan retain source coordinates. The separately labelled 105–125°E / 6–23°N marine inset does not constrain the initial mainland camera fitting. Natural mobile mode omits that independent inset and its texture; the metadata explicitly records `visible: false`.
- Linear artistic vertical scale: 0.0026 world units per source metre; no extrusion, national-border cliff, generated mountain noise or vertical soil skirt. The actual rendered maximum in the 2026-10-22 browser check was 15.932 world units on desktop and 15.508 on the mobile grid, across a 440.32-unit terrain width. These scales are a miniature interpretation, not a uniformly scaled terrain survey.

## Surface treatment

The albedo grades the project's historical December 2004 NASA Blue Marble image into moss, pale stone, dry grass and neutral snow. It is an art-directed color treatment, not current weather or measured vegetation coverage. Bright neutral source highlights guide snow instead of whitening the whole plateau by elevation. Low inland basins are not colored as lakes merely because their elevation is negative.

Concavity shading, roughness and residual normals come from the reconstructed DEM. The normal map contains only the difference between source relief and the actual rendered mesh interpolation. Normals use linear color space; albedo uses sRGB. The material map packs occlusion into red and roughness into green. Natural lighting remains live as the camera rotates.

The current homepage uses the versioned `surface-v2/` maps. Its source-guided palette separates dryland, plains, mountain vegetation, rock, snow and shallow/deep water. See that folder's README, source hashes and terrain-only budget; old v1 maps are preserved for older builds.

Three small **art-authored** landmarks add rock, branch and foliage meshes at the existing Zhangjiajie, Guilin and Lijiang city anchors. These are far-view landscape symbols, not surveyed scenic reconstructions or scans of those named places. Generic CC0 scan rock and foliage sources, processing, file hashes and model-only budgets are in `landmarks-v2/manifest.json`. They are separate from the DEM's source elevation and must not be used to infer actual mountain dimensions.

The experimental `canopy-v1/` land-cover layer failed browser art review and is **not enabled on the public national overview**. Its ESA source data and prototype module are retained for future development. A default `canopyState=deferred` means no crown-atlas/forest-point request or rendering, rather than a successfully loaded canopy. The final QA report records this distinction.

`surface-sources.json` records texture sizes, source files, processing and SHA-256. All textures are prepared once, so a visitor's phone does not reproject millions of photographic samples. Regenerate from the project root with `node scripts/prepare-natural-atlas.mjs` (uses the existing Next sharp dependency and the public terrain sources; no new package).

## Rendering budgets

Desktop terrain: 173,641 vertices / 345,600 triangles. Mobile: 49,601 vertices / 98,304 triangles. The desktop sea and marine inset add four triangles; mobile omits the independent inset, leaving two extra sea triangles. The three main desktop textures are 1536 × 1152 and mobile textures 768 × 576, approximately 27 MiB / 6.75 MiB including RGBA mip chains. This excludes the renderer, environment, terrain buffers, separately loaded landmark models and the small inset. Current actual whole-scene draw/triangle and first-entry resource counts are reported separately in `docs/qa/daylight-atlas-02/`; do not treat older v1 measurements as a measurement of this revision.

Measured transfer sizes and geometry counts are saved in `docs/qa/miniature-map-20261022/terrain-budget.json`. Transfer figures cover terrain-related assets only, not JavaScript, fonts or destination photographs. Browser screenshots of the first and corrected terrain are in the same QA folder. Counts are not a sustained FPS benchmark.

Natural mode uses left-drag orbit, constrained pitch and zoom, no free panning, Ctrl/⌘ + wheel zoom on desktop, and two-finger zoom on touch. Ordinary wheel events continue to scroll the page; `touch-action: pan-y` preserves vertical page scrolling. Reset and keyboard controls remain available. Rendering stops at rest when `animateOverview: false`, and is suspended offscreen or in a hidden tab. Labels additionally use a short height-field visibility test instead of per-frame full-mesh raycasting.
