Bake library AO and lift environment textures
Phase 4 of the v0.6.0 graphics plan: - tools/bake_ao.py bakes 256² AO maps for every Blender character/gear/prop (Cycles, existing UVs) next to each GLB; Materials.apply_ao() wires the red channel into character slots, gear, and props. Compatibility has no SSAO. - Regenerated brick/concrete/asphalt at 1024² with OpenRouter, derived tangent normal maps via tools/make_normal_maps.py, and wired them through SurfaceMaterials.textured() without changing UV scales. - Evaluated Forward+: boots on desktop Vulkan, but the renderer is project-wide and Web must stay GL Compatibility; v0.6.0 keeps Compatibility (decision in MEMORY/plan). A desktop-only override is deferred. - Recaptured screenshots; compare 11 good / 0 bad. Fixed marquee text alignment. - Tests: baked AO maps exist for all 46 assets; prop/character AO material checks; headless 222/222, Python 69/69, all smokes pass. - Version 0.6.0; ADR-0013 accepted; README/architecture/blender-assets/plan and TODO/DONE updated.
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# ADR-0013: Blender-authored NPC characters and baked materials
|
||||
|
||||
- **Status:** Proposed
|
||||
- **Status:** Accepted (v0.6.0)
|
||||
- **Date:** 2026-11-01
|
||||
|
||||
## Context
|
||||
|
||||
@@ -76,7 +76,7 @@ The player interacts with NPCs, venue entrances, access artifacts, equipment, st
|
||||
- `ReputationEvaluator` converts incidents and shift outcomes into performance feedback.
|
||||
- `CrowdSystem` models queues, attention, congestion, and public reaction.
|
||||
- `ShiftReview` presents decisions, consequences, and improvement opportunities.
|
||||
- `SurfaceMaterials` (`src/game/materials.gd`) holds the surface profiles, glass/emissive recipes, and the environment tune-up (tonemapping, glow, fog, grading) that the phase lighting applies.
|
||||
- `SurfaceMaterials` (`src/game/materials.gd`) holds the surface profiles, textured albedo/normal recipes, baked-AO wiring, glass/emissive recipes, and the environment tune-up (tonemapping, glow, fog, grading) that the phase lighting applies.
|
||||
- `WorldBuilder` assembles the procedural venue and instantiates the generated prop models from `assets/models/generated/` with a procedural fallback.
|
||||
- `tools/model_pipeline.py` builds and audits the street-prop `.glb` models and packs their colour atlases.
|
||||
- `tools/npc_pipeline.py` builds and audits the skinned NPC base model (`assets/models/generated/npc_base.glb`) and its per-slot material maps, with an optional AI fabric override (ADR-0013).
|
||||
|
||||
@@ -233,7 +233,7 @@ Props are grounded except `wall_lantern` and `marquee`; both may be emissive.
|
||||
asset is absent); CI still runs the Godot import and headless suite.
|
||||
|
||||
|
||||
### Phase 4 — Environment and lighting lift (after NPCs land)
|
||||
### Phase 4 — Environment and lighting lift (after NPCs land) ✅
|
||||
|
||||
1. **Baked AO on props:** use the Phase 3.5 Blender prop replacements
|
||||
(`street_lamp`, `street_tree`, `bench`, …) and bake AO into their
|
||||
@@ -242,9 +242,9 @@ Props are grounded except `wall_lantern` and `marquee`; both may be emissive.
|
||||
2. **Higher-resolution environment textures:** regenerate brick/concrete/asphalt
|
||||
through `asset_pipeline.py` with normal maps, keeping the current UV scales;
|
||||
use the same sRGB/albedo + packed ORM discipline as the library assets.
|
||||
3. **Evaluate a desktop-only Forward+ preset** (SSAO/SSIL/volumetrics) while the
|
||||
Web export preset keeps `thread_support=false` and GL Compatibility. Decide
|
||||
explicitly in an ADR addendum; do not silently change the renderer.
|
||||
3. **Evaluate a desktop-only Forward+ preset** — done: it boots on the desktop Vulkan
|
||||
driver, but the renderer is project-wide and the Web preset must stay GL
|
||||
Compatibility. v0.6.0 keeps Compatibility; a desktop-only override is deferred.
|
||||
4. Regenerate `docs/screenshots/` with `capture_screenshots.gd`, then run
|
||||
`screen_designs.py compare` and `judge` as the regression gate, plus
|
||||
`blender_assets.py sheet` for the character/gear/prop library.
|
||||
|
||||
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 1.1 MiB After Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 864 KiB After Width: | Height: | Size: 891 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.5 MiB |
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 592 KiB |