From 0b1330de9b8d78f398753d878f495f324617d203 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 29 Sep 2026 10:58:24 +0800 Subject: p73: 昼夜光照四时段档(清晨/正午/黄昏/夜晚) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit M6Presentation 新增 periodAtTick/periodLighting 参数表(AmbientTint 乘性色调 + Veil/VeilAlpha 加性覆盖 + LanternGlow),边界与 timePeriodLabel 一致;正午为恒等档不改白平衡。DrawWorldView 并入时段色调与 effectiveLanternGlow(黄昏 0.6 起点亮、夜晚 1.0),覆盖色最后叠加。新增 P73 回归;新增 LV_P73_SHOT 同机位四帧证据 + analyze-p73(verdict=PASS);字形表补 正/午(345)。Desktop 346/346、Kernel 120/120、digest 与 p70 一致。 --- docs/evidence/p73-analysis.txt | 28 +++++++++++++++++++++ docs/evidence/p73-dusk.png | Bin 0 -> 193559 bytes docs/evidence/p73-morning.png | Bin 0 -> 188561 bytes docs/evidence/p73-night.png | Bin 0 -> 185380 bytes docs/evidence/p73-noon.png | Bin 0 -> 106218 bytes ...273\264\346\212\244\350\257\264\346\230\216.md" | 17 +++++++++++++ 6 files changed, 45 insertions(+) create mode 100644 docs/evidence/p73-analysis.txt create mode 100644 docs/evidence/p73-dusk.png create mode 100644 docs/evidence/p73-morning.png create mode 100644 docs/evidence/p73-night.png create mode 100644 docs/evidence/p73-noon.png (limited to 'docs') diff --git a/docs/evidence/p73-analysis.txt b/docs/evidence/p73-analysis.txt new file mode 100644 index 0000000..a8a0243 --- /dev/null +++ b/docs/evidence/p73-analysis.txt @@ -0,0 +1,28 @@ +P73(昼夜光照层次:清晨/正午/黄昏/夜晚四档)证据分析 — 真实 Desktop xvfb 1280x720 +钩子:LV_P73_SHOT=1(同一桥头光源机位,6/12/18/22 各一帧,画面差异只来自光照) +路径:tick → periodAtTick → periodLighting(环境色调/覆盖色/VeilAlpha/灯光) + 连续 blend/warmth veils + +p73-morning: hour=6.0 tick=1296000 period=清晨 blend=0.2 lantern=0.32 tint=(255, 229, 212) veil=20 +p73-noon: hour=12.0 tick=2592000 period=正午 blend=0.0 lantern=0.0 tint=(255, 255, 255) veil=0 +p73-dusk: hour=18.0 tick=3888000 period=黄昏 blend=0.0 lantern=0.6 tint=(255, 255, 255) veil=52 +p73-night: hour=22.0 tick=4752000 period=夜晚 blend=1.0 lantern=1.0 tint=(118, 136, 184) veil=26 + + +p73-morning.png: size=1280x720 brightness=107.9 R=123.0 G=118.7 B=81.8 warmth(R-B)=+41.2 std=34.1 dark_block=0 +p73-noon.png: size=1280x720 brightness=86.4 R=71.0 G=107.8 B=80.4 warmth(R-B)=-9.5 std=36.5 dark_block=0 +p73-dusk.png: size=1280x720 brightness=97.8 R=113.8 G=111.5 B=68.0 warmth(R-B)=+45.8 std=39.2 dark_block=0 +p73-night.png: size=1280x720 brightness=89.8 R=65.7 G=90.1 B=113.6 warmth(R-B)=-47.9 std=40.2 dark_block=0 + +diff p73-morning vs p73-noon: differing_pixels=905809 +diff p73-morning vs p73-dusk: differing_pixels=905399 +diff p73-morning vs p73-night: differing_pixels=921390 +diff p73-noon vs p73-dusk: differing_pixels=905696 +diff p73-noon vs p73-night: differing_pixels=921368 +diff p73-dusk vs p73-night: differing_pixels=921390 + +brightness order: morning(107.9) > dusk(97.8) > night(89.8) > noon(86.4) +warmth order: dusk(+45.8) > morning(+41.2) > noon(-9.5) > night(-47.9) + +verdict=PASS + four periods have distinct parameters; noon identity, dusk lamps on, night lamps full; + real frames render 1280x720, differ pairwise, night darker / noon brighter / dusk warmer. diff --git a/docs/evidence/p73-dusk.png b/docs/evidence/p73-dusk.png new file mode 100644 index 0000000..1ad7fa4 Binary files /dev/null and b/docs/evidence/p73-dusk.png differ diff --git a/docs/evidence/p73-morning.png b/docs/evidence/p73-morning.png new file mode 100644 index 0000000..1126d8b Binary files /dev/null and b/docs/evidence/p73-morning.png differ diff --git a/docs/evidence/p73-night.png b/docs/evidence/p73-night.png new file mode 100644 index 0000000..d7da3d8 Binary files /dev/null and b/docs/evidence/p73-night.png differ diff --git a/docs/evidence/p73-noon.png b/docs/evidence/p73-noon.png new file mode 100644 index 0000000..2458546 Binary files /dev/null and b/docs/evidence/p73-noon.png differ diff --git "a/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" "b/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" index 5fa87a4..9d27dd1 100644 --- "a/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" +++ "b/docs/\347\273\264\346\212\244\350\257\264\346\230\216.md" @@ -91,6 +91,23 @@ final_digest 固定 953775FAEB2FDDE97289491AA260BD8D390C571E48A7A13AD2CB6FB7124F `CharacterFeetSitOnTheTileGroundLine`;图像级 `scripts/check-no-white-blocks.py` 对夜晚录帧断言不存在 ≥64×64、每通道 ≥250、alpha ≥250 的方块(P13 旧帧 42/69 命中,修复后 0 命中)。 +## 昼夜光照档(P73) + +- 既有 `lightingBlend`(0 白天→1 夜晚,dawn 4.0–6.5 / dusk 20.0–22.0)与 `transitionWarmth` + (晨曦/黄昏三角暖色峰)是**连续曲线**;P73 在其上再叠一层**四时段档**,填补 17:00–19:15 + 原本与正午无差的黄昏空档。两者都由 `world.Tick` 纯函数导出,Kernel 不参与。 +- `M6Presentation.periodAtTick`:边界与 `timePeriodLabel` 完全一致(<5 夜晚、<8 清晨、 + <17 正午、<21 黄昏、否则夜晚)→ `Morning | Noon | Dusk | Night`。 +- `M6Presentation.periodLighting`:纯数据参数表,每档给 `AmbientTint`(乘性环境色调)、 + `Veil`/`VeilAlpha`(加性覆盖色,经 `VillageArt.premultiply`)、`LanternGlow`(灯光强度)。 + **正午档为恒等**(白 tint / `VeilAlpha=0` / 灯光 0),故既有正午白平衡不变。 +- 渲染接线(`Game.fs` `DrawWorldView`):`worldTint = multiplyTint profile.WorldTint period.AmbientTint`; + `lanternGlow = effectiveLanternGlow tick`(连续曲线与时段档取大,黄昏 0.6 起灯笼点亮、夜晚 1.0); + 时段覆盖色在 golden/moon veil 之后最后叠上。HUD/室内界未改。 +- **回归**:`P73LightingTierTests`(四档两两不同、正午恒等、黄昏灯亮、夜晚灯满、时段边界与 + `timePeriodLabel` 一致)。**证据**:`scripts/analyze-p73.py` 对 `LV_P73_SHOT=1`(同一桥头机位 + 6/12/18/22 四帧)断言参数一致 + 亮度/暖度可辨 + 两两 pixel diff,落 `docs/evidence/p73-*`。 + ## 性能基线命令 ```bash -- cgit v1.2.3