docs(pipeline): spec amendment - v1 pak stores RGBA8, BC compression deferred

MP1a ground truth: the runtime atlas consumes decoded RGBA8 via
TextureBatchData, so baking to BC7/BC1 (lossy) would change delivered
pixels and contradict the phase's own byte-identical conformance gate.
V1 stores RGBA8 exactly as the runtime produces; BC becomes an explicit
post-conformance option with its own visual gate. Mip chains stay
runtime-generated in v1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-07-05 20:39:36 +02:00
parent 1477cda60a
commit 5722681bf5

View file

@ -138,8 +138,14 @@ client uses today**, run offline:
- Mesh extraction (GfxObj/Setup → GPU-layout vertex/index + batch tables) via the
existing ObjectMeshManager build path.
- Texture decode (palette/INDEX16/etc. → RGBA) via the existing TextureHelpers path,
then compressed to BC7 (quality) / BC1 (opaque bulk) with precomputed mip chains.
- Texture decode (palette/INDEX16/etc. → RGBA) via the existing TextureHelpers path.
**AMENDED 2026-07-05 (MP1a ground truth):** v1 pak stores **decoded RGBA8 exactly
as the runtime path produces today** (the atlas consumes RGBA8 via
`TextureBatchData` — storing BC7/BC1 would change delivered pixels and violate
this phase's byte-identical conformance gate). BC compression (quarter the disk
+ VRAM, lossy) is an explicit post-conformance option requiring its own visual
gate and user approval, not v1 scope. Mip chains remain runtime-generated
(`GenerateMipmaps` flush) in v1 for the same reason.
- BSPs (physics, cell, drawing) flattened to index-based node arrays (blittable).
- Landblock terrain data (heights/attributes) as blittable arrays.
- EnvCells (geometry + portals + surfaces) as blittable records.