From 37953a4b58dfc5f3b8aedf10ad6f1474c2960767 Mon Sep 17 00:00:00 2001 From: "Somhairle H. Marisol" Date: Tue, 22 Sep 2026 01:53:24 +0800 Subject: feat(desktop): P18 黄昏暖色真实渲染(加性暖色 veil + 双窗口光照 + 时段标签对齐) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/LivingVillage.Desktop/Game.fs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/LivingVillage.Desktop/Game.fs') diff --git a/src/LivingVillage.Desktop/Game.fs b/src/LivingVillage.Desktop/Game.fs index 765cea8..e48888e 100644 --- a/src/LivingVillage.Desktop/Game.fs +++ b/src/LivingVillage.Desktop/Game.fs @@ -893,6 +893,14 @@ type LivingVillageGame() as this = VillageArt.drawGroundShadow spriteBatch pixel camera npc.Pos let spec = VillageArt.npcSpriteSpecAtTarget npc.Id npc.Pos npc.Mind.Target world.Tick VillageArt.drawCharacter spriteBatch artTextures camera npc.Pos spec profile.WorldTint + + // Golden-hour wash: the multiplicative WorldTint can only darken, so a warm + // premultiplied veil is layered over the whole scene. Because rgb is premultiplied + // by its own low alpha it adds warm light without ever saturating to white; alpha + // is a pure tick function, so noon/midnight get none and dawn/dusk peak warm. + let veilAlpha = M6Presentation.goldenVeilAlpha world.Tick + if veilAlpha > 0 then + spriteBatch.Draw(pixel, Rectangle(0, 0, viewport.Width, viewport.Height), VillageArt.premultiply 255 150 70 veilAlpha) spriteBatch.End() // Contextual floating prompt over the unique target; same CJK atlas font path as the HUD. -- cgit v1.2.3