# V6.21A — world-texture backdrop WIP

Base: V6.20 WIP / V6.19 environment architecture chain.

## Intentional change
Premium environment plate is no longer assigned as a texture to `scene.background`.
It is rendered on `NEX_WORKOUT_ENVIRONMENT_BACKDROP_V1`, a camera-locked textured plane inside the same Nex Three.js scene as Nex and the 3D runway.

The backdrop plane:
- uses MeshBasicMaterial, no fog/tone mapping,
- renders first with no depth writes,
- stays behind Nex and runway,
- follows the frozen camera transform without changing the camera equations,
- preserves source aspect with cover-style UV crop.

## Frozen state
- Frozen Player Guard: PASS | core=22 | profiles_locked=18 | motion/model=66
- 21/21 other locked presentation-core files are byte-identical to V6.20.
- Motion/IK/resolved/camera equations/travel/media unchanged.

## Real Chromium evidence
NEXT Blue real `preview.html?workout=dynamic-warmup#pass` capture reached:
- WebGL2
- ANGLE / SwiftShader
- `scene.background` is not a texture
- `NEX_WORKOUT_ENVIRONMENT_BACKDROP_V1` present
- backdrop material map is a 1440x810 WebP texture
- Nex and sport-runway render in front.

## WIP reason
Technical render-layer correction is successful, but the current 16:9 plate loses too much environment identity under the portrait 390x844 crop. Do not mark the art direction final. Next step is portrait-safe sport base plates, followed by accent/color treatments of the same sport plate.
