From 5722681bf516e6d388c4dd1ac6b608b2fb58ecb4 Mon Sep 17 00:00:00 2001 From: Erik Date: Sun, 5 Jul 2026 20:39:36 +0200 Subject: [PATCH] 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 --- .../specs/2026-07-05-modern-pipeline-design.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md b/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md index ec8ef50e..17663779 100644 --- a/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md +++ b/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md @@ -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.