Adopt the realism pass and refresh screenshots/docs
Full build / Import + headless tests (push) Successful in 34s
Full build / Full desktop build + optional release (push) Skipped

- add the v2 runtime picks: per-phase skyline panoramas, brick, sidewalk
  pavers, dry/wet asphalt, awning canvas, and their normal maps
- add the realism tooling and evidence: tools/scene_concepts.py, capture_realism.gd,
  concept frames, reports/sheets, and tests
- retune phase lighting/fog/exposure, add sun yaw, brighten the night glow,
  add the flashlight beam mesh, and rebuild the planter/tree assets
- regenerate all eleven staged screenshots from the current build; compare is
  11 good / 0 bad
- finish the visual-alignment closeout in DONE/TODO, update architecture,
  blender-assets, PLAN, and ignore rules (editable Blender sources untracked)
- keep the judge retry and document the verified default judge model

Verification: headless 227/227; Python tooling 86/86; check_screenshots 11/11.
This commit is contained in:
zwitschi committed 2026-11-01 17:03:05 +01:00
1 parent 26ecb93fd4
commit d7e523f63c
70 files changed
+4042 -101

No files matched your search

+20
View File
@@ -30,6 +30,26 @@ func test_textured_recipes_keep_their_texture_and_profile() -> bool:
var e := TestUtils.check(Materials.flat(Color.RED, "metal").metallic > 0.5, "metal role is metallic")
return a and b and c and d and e
func test_realism_pick_tiles_and_wet_asphalt() -> bool:
## The realism pass swapped the flat first-generation tiles for the v2 picks.
## The street has a dry and a wet variant for day and late night.
var brick := Materials.brick()
var dry := Materials.asphalt()
var wet := Materials.asphalt(Color(0.46, 0.48, 0.53), Vector2(30, 7), true)
var a := TestUtils.check(brick.albedo_texture.resource_path.contains("v2/picks/"),
"brick uses the promoted v2 pick")
var b := TestUtils.check(brick.normal_enabled and brick.normal_texture != null,
"brick carries its normal map")
var c := TestUtils.check(dry.albedo_texture != wet.albedo_texture,
"wet asphalt uses its own albedo")
var d := TestUtils.check(wet.roughness < dry.roughness,
"wet asphalt is glossier than dry asphalt")
var e := TestUtils.check(wet.metallic_specular > dry.metallic_specular,
"wet asphalt catches the lamps")
var f := TestUtils.check(wet.albedo_texture.resource_path.contains("picks"),
"the wet map is a promoted pick")
return a and b and c and d and e and f
func test_glass_and_emissive_recipes() -> bool:
var glass := Materials.glass()
var pane := Materials.window_pane()