diff --git a/DONE.md b/DONE.md index 85778d7..89641d1 100644 --- a/DONE.md +++ b/DONE.md @@ -1879,3 +1879,81 @@ unexplained regressions. Accepted limits: hand items use the forward-offset open a finger-curl rig; fabric folds stay out of the low-poly target; the >26 m impostor remains a two-quad billboard; evening readability is represented by the day/night/LATE final-context set. Tagged `v0.9.4`; Gitea run 916 passed checks and the full build and published seven assets. + +## Patch 0.9.5 — Texture and material refinement + +Goal: improve close-range surface and character texture quality while keeping GL +Compatibility/Web parity, deterministic assets and offline CI. + +### Environment textures and materials + +- [x] Audit the v2 picks (brick, sidewalk pavers, dry/wet asphalt, awning canvas, + day/dusk/night skylines) at close range and in the entrance/street shots for + seams, tiling, scale, contrast and normal-map strength. (New `surfaces` and + `surfaces_joke` capture stages; no seam or UV-scale failures found.) +- [x] Refine brick mortar/wear, paver joints/stains, asphalt aggregate/wet response + and awning weave using the existing image/asset tooling; never overwrite a + pick, use `-vN` candidates and promote validated results. (The Walk of Fame + band now uses the paver/terrazzo texture; the neighbour awning keeps its + cream stripe via a neutral tint and 4× UV. Brick/asphalt picks held up.) +- [x] Check UV scales and material roughness/metallic profiles; keep day/night + phase behavior and the wet-street transition intact. (Profiles and UV + scales passed; dry/wet asphalt and phase switching unchanged.) +- [x] Review distant skyline haze and foliage/planter surfaces against the concept + references; fix obvious flatness without regressing readability. (Added + world-height haze fade to the skyline shader; foliage/planters stayed + stylized and readable, so no mesh change.) + +### Character and prop textures + +- [x] Audit NPC skin, cloth, pants, hair and gear albedo/normal/AO maps in portraits; + refine fabric weave, skin variation and fixed detail materials. (256² maps rebuilt; fabric + now uses a 4× UV weave and skips baked per-character AO, removing the portrait blotches; + skin/hair/gear keep AO. Comparison `sheet_npc_baseline_compare-texuv.jpg`.) +- [x] Re-bake AO where geometry changes; verify the 256² maps and material wiring. + (No character geometry changed in the texture pass; asset/base audits pass.) +- [x] Audit library props and UI/card/icon textures at their actual screen sizes; + remove blurry/oversized or unused textures where safe. (All 21 screen-art + textures are 1280×720 and referenced; access cards are 256×128, HUD icons + 64×64; no oversized or unused runtime texture found. Legacy root textures + remain only as the `generate_textures.py`/asset-test fallback.) +- [x] Run texture audits, import, and the full asset test suite; record texture memory + and triangle/draw-call impact. (Godot 263/263, Python 101/101; asset and base + audits pass; 24 NPCs = 168 meshes / 131,616 triangles / 6.94 ms. Compressed + payloads: picks 24.55 MB, UI art 22.67 MB, NPC maps 0.48 MB.) + +### Visual verification + +- [x] Run `python3 tools/scene_concepts.py realism` for the affected stages with the + judge enabled; record metric gaps and model/spend. (Run + `docs/screens/realism/2026-11-02-tex` with `z-ai/glm-5.3-flash`, one pass per + shot; mean `after` overall 1.8, lighting 2.3, materials 1.8, texture 1.2, + backdrop 2.0, characters 1.2, Pillow gap 0.306. The judge is optional and not + a CI gate; the report stays local.) +- [x] Re-run `tools/check_screenshots.sh` and the screen-design judge; clear all + `diff` verdicts. (21 good / 0 bad; `screen_designs.py judge` = 21/21 match, + 0 review, 0 diff.) +- [x] Capture before/after close-ups for brick, pavement, asphalt, character cloth + and skyline; document accepted trade-offs. (Committed + `docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`: Walk of Fame + pavers, asphalt aggregate, limestone facade, day skyline haze and NPC cloth; + asphalt/limestone picks intentionally held, no replacement.) +- [x] Update asset docs and the changelog/status with the promoted texture versions. + (README/PLAN/architecture/status/MEMORY and the 0.9.5 changelog entry now + carry the texture results; the 0.9.5 section moved to `DONE.md` after the + release build.) + + +Completed 2026-11-02: all 0.9.5 texture and material checks are closed. The NPC +base and eight library characters use 256² maps, cloth/pants use the 4× fabric +weave without baked-AO blotches, the Walk of Fame band uses the paver/terrazzo +texture, the neighbour awning keeps its cream stripe, and the skyline fades into +per-phase haze. Godot is 263/263, Python tooling 101/101, `blender_assets.py +audit`/`fit` and `npc_pipeline.py audit` pass, the 24-NPC headless smoke is +6.94 ms (168 meshes / 131,616 triangles), the 48-frame baseline and 96-frame +final-context review pass, `check_screenshots.sh` is 21 good / 0 bad, and the +screen-design judge is 21/21 match. The optional realism judge ran with +`z-ai/glm-5.3-flash` (mean overall 1.8, Pillow gap 0.306) and its report remains +local; the committed comparison sheet is +`docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`. Tagged `v0.9.5`; +Gitea run 922 passed checks and the full build and published seven assets. diff --git a/MEMORY.md b/MEMORY.md index b28e45c..73575fe 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -183,6 +183,11 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o 0.9.3 UI polish, 0.9.4 NPC visual optimization and 0.9.5 texture/material pass are complete and in `DONE.md`. 0.9.6 integration and 0.10.0 release work are next. The current source version is 0.9.5. +- **Release v0.9.5 (2026-11-02):** commit `4bc6390` tagged `v0.9.5`; Gitea Actions run + 922 passed checks and the full build and published seven assets (Linux, Windows, + macOS, NSIS setup, AppImage, Web, Desktop HQ). Release page: + `https://git.allucanget.biz/zwitschi/security-game/releases/tag/v0.9.5`. Do not + reuse the tag; future fixes need a new patch tag. - **Release v0.9.4 (2026-11-02):** commit `a57b86c` tagged `v0.9.4`; Gitea Actions run 916 passed checks and the full build and published seven assets (Linux, Windows, macOS, NSIS setup, AppImage, Web, Desktop HQ). Release page: @@ -856,7 +861,7 @@ GitHub Actions. ## Uncommitted Workstreams -- **None (2026-11-01).** The NPC detail pass, the realism follow-ups and the flashlight beam - decision are committed together with the portrait capture and the refreshed screenshots. - Keep the rule from `AGENTS.md`: check `git status` before committing, and never revert - another contributor's in-flight files. +- **None (2026-11-02).** The 0.9.5 texture pass is committed, tagged `v0.9.5` and + published with seven assets; the workspace is clean apart from local/gitignored + realism and capture output. Keep the rule from `AGENTS.md`: check `git status` + before committing, and never revert another contributor's in-flight files. diff --git a/README.md b/README.md index 526bc4f..c99b549 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ Full setup, every run/test/smoke command, and the controls table are in - [`docs/development-status.md`](docs/development-status.md) — Implemented features and what's next. - [`docs/smoke-checklist.md`](docs/smoke-checklist.md) — Manual smoke-test checklist. - [`docs/blender-assets.md`](docs/blender-assets.md) — Blender asset library: characters, gear, props, attach points. -- [`docs/npc-visual-review.md`](docs/npc-visual-review.md) — 0.9.4 NPC baseline, acceptance criteria and ranked visual gaps; 0.9.5 texture comparison is in `docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`. +- [`docs/npc-visual-review.md`](docs/npc-visual-review.md) — 0.9.4 NPC baseline, acceptance criteria and ranked visual gaps; 0.9.5 texture comparison is in [`docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`](docs/blender_previews/sheet_texture_refinement_0.9.5.jpg). - [`docs/npc-proportion-audit.md`](docs/npc-proportion-audit.md) — NPC proportion measurements against the shared stylized guide. - [`docs/adr/`](docs/adr/) — Architecture Decision Records. - [`TODO.md`](TODO.md) — Active tasks plus the 0.x gap analysis and milestone roadmap. diff --git a/TODO.md b/TODO.md index b59fbd7..1560b89 100644 --- a/TODO.md +++ b/TODO.md @@ -47,71 +47,8 @@ release-candidate foundation, not yet a 0.10.0 release candidate. **Current priority:** map optimization, the **pre-build NPC revisit**, the **0.9.3 UI polish**, **0.9.4 NPC visual optimization** and **0.9.5 texture refinement** passes are complete (all moved to `DONE.md` on 2026-11-02). -0.9.6 integration and the 0.10.0 release candidate are queued. The source -version is now 0.9.5. - -## Patch 0.9.5 — Texture and material refinement - -Goal: improve close-range surface and character texture quality while keeping GL -Compatibility/Web parity, deterministic assets and offline CI. - -### Environment textures and materials - -- [x] Audit the v2 picks (brick, sidewalk pavers, dry/wet asphalt, awning canvas, - day/dusk/night skylines) at close range and in the entrance/street shots for - seams, tiling, scale, contrast and normal-map strength. (New `surfaces` and - `surfaces_joke` capture stages; no seam or UV-scale failures found.) -- [x] Refine brick mortar/wear, paver joints/stains, asphalt aggregate/wet response - and awning weave using the existing image/asset tooling; never overwrite a - pick, use `-vN` candidates and promote validated results. (The Walk of Fame - band now uses the paver/terrazzo texture; the neighbour awning keeps its - cream stripe via a neutral tint and 4× UV. Brick/asphalt picks held up.) -- [x] Check UV scales and material roughness/metallic profiles; keep day/night - phase behavior and the wet-street transition intact. (Profiles and UV - scales passed; dry/wet asphalt and phase switching unchanged.) -- [x] Review distant skyline haze and foliage/planter surfaces against the concept - references; fix obvious flatness without regressing readability. (Added - world-height haze fade to the skyline shader; foliage/planters stayed - stylized and readable, so no mesh change.) - -### Character and prop textures - -- [x] Audit NPC skin, cloth, pants, hair and gear albedo/normal/AO maps in portraits; - refine fabric weave, skin variation and fixed detail materials. (256² maps rebuilt; fabric - now uses a 4× UV weave and skips baked per-character AO, removing the portrait blotches; - skin/hair/gear keep AO. Comparison `sheet_npc_baseline_compare-texuv.jpg`.) -- [x] Re-bake AO where geometry changes; verify the 256² maps and material wiring. - (No character geometry changed in the texture pass; asset/base audits pass.) -- [x] Audit library props and UI/card/icon textures at their actual screen sizes; - remove blurry/oversized or unused textures where safe. (All 21 screen-art - textures are 1280×720 and referenced; access cards are 256×128, HUD icons - 64×64; no oversized or unused runtime texture found. Legacy root textures - remain only as the `generate_textures.py`/asset-test fallback.) -- [x] Run texture audits, import, and the full asset test suite; record texture memory - and triangle/draw-call impact. (Godot 263/263, Python 101/101; asset and base - audits pass; 24 NPCs = 168 meshes / 131,616 triangles / 6.94 ms. Compressed - payloads: picks 24.55 MB, UI art 22.67 MB, NPC maps 0.48 MB.) - -### Visual verification - -- [x] Run `python3 tools/scene_concepts.py realism` for the affected stages with the - judge enabled; record metric gaps and model/spend. (Run - `docs/screens/realism/2026-11-02-tex` with `z-ai/glm-5.3-flash`, one pass per - shot; mean `after` overall 1.8, lighting 2.3, materials 1.8, texture 1.2, - backdrop 2.0, characters 1.2, Pillow gap 0.306. The judge is optional and not - a CI gate; the report stays local.) -- [x] Re-run `tools/check_screenshots.sh` and the screen-design judge; clear all - `diff` verdicts. (21 good / 0 bad; `screen_designs.py judge` = 21/21 match, - 0 review, 0 diff.) -- [x] Capture before/after close-ups for brick, pavement, asphalt, character cloth - and skyline; document accepted trade-offs. (Committed - `docs/blender_previews/sheet_texture_refinement_0.9.5.jpg`: Walk of Fame - pavers, asphalt aggregate, limestone facade, day skyline haze and NPC cloth; - asphalt/limestone picks intentionally held, no replacement.) -- [x] Update asset docs and the changelog/status with the promoted texture versions. - (README/PLAN/architecture/status/MEMORY and the 0.9.5 changelog entry now - carry the texture results; the 0.9.5 section moved to `DONE.md` after the - release build.) +0.9.6 integration and the 0.10.0 release candidate are next. The source version +is now 0.9.5; the v0.9.5 release is published. ## Postponed — Patch 0.9.6 — Integration, performance and judge gate diff --git a/docs/development-status.md b/docs/development-status.md index 832b5aa..eb010d8 100644 --- a/docs/development-status.md +++ b/docs/development-status.md @@ -42,6 +42,7 @@ Implemented so far: - NPC neck/shoulder transition (0.9.4 work): the body graph now uses a fuller neck base, a slightly tapered neck top and a lower shoulder root, giving the head/neck/shoulder line a trapezius slope instead of a thin post. The full character library was rebuilt with a final degenerate-face cleanup; the baseline comparison is `sheet_npc_baseline_compare-body.jpg`. - NPC face-depth pass (0.9.4 work): sclera are recessed and capped by a thin upper lid, and the separate jaw/cheek spheres are replaced by a chin plate and cheekbones sculpted into the head mesh. The full library was rebuilt; the comparison is `sheet_npc_baseline_compare-face.jpg`. - NPC torso/hip transition (0.9.4 work): the pelvis and chest are slightly wider than the waist, giving shirts and jackets a readable taper into the hips without changing the build multipliers or the skeleton. The comparison is `sheet_npc_baseline_compare-torso.jpg`. +- Release v0.9.5 (2026-11-02): the tagged commit `4bc6390` passed Gitea Actions run 922 (checks + full build) and published seven artifacts (Linux, Windows, macOS, NSIS setup, AppImage, Web and Desktop HQ). Release page: . - Release v0.9.4 (2026-11-02): the tagged commit `a57b86c` passed the Gitea checks and full build and published seven artifacts (Linux, Windows, macOS, NSIS setup, AppImage, Web and Desktop HQ). Release page: . - Environment texture pass (0.9.5 work): `capture_realism.gd` now has hidden-HUD `surfaces`/`surfaces_joke` close-up stages. The Walk of Fame band uses the paver texture as dark terrazzo, the neighbour awning keeps its cream stripe, and the skyline shader blends its lower 42 m toward a per-phase haze colour. Brick, asphalt, limestone and paver UV scales/profiles passed without replacement. - Texture/prop audit (0.9.5 work): all 21 screen-art textures are 1280×720 and referenced; access cards are 256×128 and HUD icons 64×64. No oversized or unused runtime texture was found; the legacy root textures remain only as the texture-generator/asset-test fallback. The 24-NPC smoke now reports 168 meshes, 131,616 triangles and 6.94 ms (50 ms budget); compressed payload is 24.55 MB of surface picks, 22.67 MB of screen art and 0.48 MB of NPC maps.