Refine NPC fabric UVs and remove baked AO blotches
This commit is contained in:
1 parent
31574b8d82
commit
d7220c1a0a
12 files changed
+64
-13
No files matched your search
@@ -70,8 +70,12 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- **NPC texture resolution (0.9.5, 2026-11-02):** `tools/npc_pipeline.py` now generates 256²
|
||||
albedo/normal/ORM maps instead of 128² (AI shirt/trousers are resized to 256). The base and all
|
||||
eight library GLBs plus AO maps were rebuilt; texture files total ~0.5 MB, eight GLBs ~5.75 MB,
|
||||
and the 24-NPC smoke remains 6.90 ms. This is a character-texture step, not a fix for the
|
||||
large-scale fabric pattern (that is still under 0.9.5 UV/weave audit).
|
||||
and the 24-NPC smoke remains 6.90 ms.
|
||||
- **NPC fabric UV/AO (0.9.5, 2026-11-02):** cloth/pants use
|
||||
`Materials.NPC_FABRIC_UV_SCALE = Vector3(4,4,1)`, and `NpcAvatar` skips the baked per-character
|
||||
AO on those two slots. The 256² AO was magnifying into large blotches; the fabric now reads as a
|
||||
fine weave. Skin/hair/gear keep baked AO. Test `test_fabric_uv_scale_avoids_the_baked_ao_pattern`
|
||||
guards this. Current suite is 263/263.
|
||||
- **NPC visual baseline (0.9.4, 2026-11-02):** `src/test/capture_npc_baseline.gd` is the
|
||||
neutral-studio 8-variant × 6-view baseline (front, three-quarter, profile, back, full body,
|
||||
crowd). It uses a fixed orbit camera, mid-grey studio backdrop, key/fill lights, no HUD/crowd/animation;
|
||||
@@ -808,7 +812,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
|
||||
- Venue `door_staff_lines` are logged through `GameManager` (inspect / wand / refuse). They are not a separate dialogue UI.
|
||||
- Access loadout is implemented; do not re-fix `override_access` as if it were still unread.
|
||||
- `Save.SETTINGS_FILE` is declared and unused; settings persistence goes through `Save.load_settings()` / `save_settings()`.
|
||||
- Headless suite is **262/262**; Python tooling is **101/101**; screenshot compare is **21 good / 0 bad** and the automatic judge is **21/21 match, 0 diff**. Remaining visual follow-ups are in `TODO.md`.
|
||||
- Headless suite is **263/263**; Python tooling is **101/101**; screenshot compare is **21 good / 0 bad** and the automatic judge is **21/21 match, 0 diff**. Remaining visual follow-ups are in `TODO.md`.
|
||||
- Typed spawn signal extra args: handlers must accept the 4th `event: Dictionary` or Godot will not call them (`test_shift_coordinator_runs_a_shift` failed until `_on_spawn` took four args).
|
||||
- GDScript inference trap that broke the main scene: a `var` typed as a base class
|
||||
(`radial: CanvasLayer`) exposes script members as `Variant`, so `var x := radial.is_open` is a
|
||||
|
||||
Reference in new issue
Block a user